首页 > 后端开发 > 正文

如何在C++中嵌入JAVA程序

2024-04-17 23:10:00 | 我爱编程网

如何在C++中嵌入JAVA程序很多朋友对这方面很关心,我爱编程网整理了相关文章,供大家参考,一起来看一下吧!

本文目录一览:

如何在C++中嵌入JAVA程序

如何在C++中嵌入JAVA程序

C/C++代码如何嵌入JAVA

Java Native Inte***C++e(JNI)是Java语言的本地编程接口,是J2SDK的一部分。在java程序中,可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。

1.标准的java类库没有提供应用程序所需要的功能,通常这些功能是平台相关的

2. 希望使用一些已经有的类库或者应用程序,而并非用java语言编写的

3. 程序的某些部分对速度要求比较苛刻,选择用汇编或者c语言来实现并在java语言中调用

(1)编写HelloWorld程序,由于涉及到要编写c/c++代*因此会在开发中使用Microsoft VC++工具。编写java代*,在硬盘上建立一个hello目录作为的工作目录,首先需要编写自己的java代*,在java代*中会声明native方法,代*非常简单。如下所示

displayHelloWorld()方法的声明,有一个关键字native,表明这个方法使用java以外的语言实现。方法不包括实现,因为要用c/c++语言实现它。注意System.loadLibrary("hello")这句代*,在静态初始化块中定义的,系统用来装载hello共享库,这就是在后面生成的hello.dll(如果在其的*作系统可能是的形式,比如hello.so)

(2)编译java代*我爱编程网

javac HelloWorld.java生成HelloWorld.class文件

(3)创建.h文件

这一步中要使用javah命令生成.h文件,这个文件要在后面的c/c++代*中用到,运行

javah HelloWorld。这样可以看到在相同目录下生成了一个HelloWorld.h文件,文件内容如下

(4) 编写本地实现代*

在这部分要用C/C++语言实现java中定义的方法,在VC++中新建一个Project,然后创建一个HelloWorldImp.cpp文件,内容如下

这里include了 jni.h和刚才得到的HelloWorld.h文件。因此要在VC++里面设置好,jni.h在JAVA_HOME/include里面。编译通过后再生成hello.dll文件。

(5)运行java程序

把上面生成的hello.dll文件复制到工作目录,这时候目录中包括HelloWorld.java,HelloWorld.class和hello.dll文件。运行java HelloWorld命令,则可在控制台看到Hello world|的输出了。

Linux下测试jni

1、在测试用户下建立src、lib目录

2、进入src目录编写HelloWorld.java

3、然后javac HelloWorld.java

4、使用 javah 工具生成 HelloWorld.h 文件

javah HelloWorld

5、编写HelloWorld.c

#include ;

#include "HelloWorld.h"

#include ;

JNIEXPORT void JNICALL

Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)

{ printf("Hello world!/n");

return;

}

6、编译c的动态库

gcc -shared -o $HOME/lib/libhello.so HelloWorld.c

注意$HOME/lib目录要加入到环境变量LD_LIBRARY_PATH中去

7、java HelloWorld运行程序

如何在C++中嵌入JAVA程序

请教VC中要实习如图Java中的功能该怎么写,求代码!

你这是要做什么功能?至于这么麻烦么?

Java匹配替换代码,

这个String.replace就好了;也可以匹配正则表达式;

看完你写这个,感觉太乱了,不知道你要表达啥一次想要怎么样的结果就你那个

str=395654545;你是要去重复?

让我看着咋跟md5加密算法那些代码有点像啊

如何在C++中嵌入JAVA程序

如何用VC编写供JAVA调用的DLL

我爱编程网(https://www.52biancheng.com)小编还为大家带来如何用VC编写供JAVA调用的DLL的相关内容。

}(2)编译该java文件,再编译生成头文件(供vc使用)javac GB2PY.java //编译生成class(3)在当前文件夹下创建 com/bw/gb2py 文件夹,将GB2PY.class放入该文件夹,回到当前文件夹,调用javah命令生成头文件。javah com.bw.gb2py.GB2PY //生成头文件,文件名为com_bw_gb2py_GB2PY.h注意头文件中的内容不能更改,否则生成的dll不能使用(4)在VC中新建名为GB2PY的Win32 dll工程,将com_bw_gb2py_GB2PY.h拷贝到工程目录下,并加入工程。再拷贝%JAVA_HOME%/include/jni.h 和 %JAVA_HOME%/include/win32/jni_md.h 到工程目录下,并加入工程。(5)实现com_bw_gb2py_GB2PY.h中声明的方法:Java_com_bw_gb2py_GB2PY_GetPY。注意java string和c中char的转换。java的string都用unicode编码(双字节),而char是单字节的。int (*GetPY)(char* szGBString,PY &oPY);JNIEXPORT jstring JNICALL Java_com_bw_gb2py_GB2PY_GetPY

(JNIEnv * env, jclass, jstring name){static HMODULE hModle = LoadLibrary("PYconvert.dll"); //第三方dll

GetPY = (LPFUN)GetProcAddress(hModle,"GBToPY");int len;char charName[128];

char charPY[512];

len = env->GetStringLength(name) * 2 + 1; //双字节长度转为单字节长度,加1是为了加结束符

memset(charName, 0, len);

const wchar_t * w_buffer = env->GetStringChars(name, 0);

int wlen = wcslen(w_buffer);

len = WideCharToMultiByte(CP_ACP, 0, w_buffer, wcslen(w_buffer) + 1, charName, len, NULL, NULL);

env->ReleaseStringChars(name, w_buffer);//以上代码将java string name中的内容拷贝到了char数组charName中... //省略部分功能代码,通过调用第三方的dll函数将汉字转换为拼音,存储在charPY数组中 int slen = strlen(charPY);

jchar * buffer = new jchar[slen];

len = MultiByteToWideChar(CP_ACP, 0, charPY, strlen(charPY), buffer, slen);

if (len > 0 && len < slen)

buffer[len] = 0;//以上代码将char型字符串转换为jchar型字符串 jstring js = env->NewString(buffer, len);

delete [] buffer;return js;}(6)编译生成dll文件,在java中就可以调用了(要用到第二步生成的类)!:)

以上就是我爱编程网为大家带来的如何在C++中嵌入JAVA程序,希望能帮助到大家!更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“如何在C++中嵌入JAVA程序”相关推荐
java如何调用c程序
java如何调用c程序

java如何调用c程序使用JNI.一、首先需要编写一个native的java方法。public class Test{     static{ System.loadLibrary("mydll"); } public static void main(String[] args) { new Test().test(); } public  native vo

2024-03-24 13:37:34
如何在MyEclipse中编译java程序?如何运行java程序?
如何在MyEclipse中编译java程序?如何运行java程序?

怎样打开java?1、首先我们打开myeclipse,点击左上角的File。2、接着选择New,选择JavaProject。3、在创建java项目的页面,首先给项目命名,点击next。4、一般在这里没有什么要设置的,点击下面的Finish。5、项目创建完毕之后,我们需要创建类文件,也就是Class文件,在源文件夹src上右击,选择New,选择Class。6、

2024-03-25 16:11:08
如何在Java小程序中添加音乐
如何在Java小程序中添加音乐

JAVA实现音频播放这个程序只要写对了音乐文件的URL地址,例如:newURL("file:/C:/tmp/1/WindowsDing.wav");就可以播放音乐,除了可以播放.wav格式的音乐,还可以播放.au格式的音乐。另外,如果你不希望音乐循环播放,你可以去掉audio1.loop();这一语句。importjava.applet.AudioClip;importjav

2024-04-10 05:59:42
如何在java程序中调用php文件
如何在java程序中调用php文件

如何在java程序中调用php文件 public String execPHP(String scriptName, String param) {        StringBuilder output = new StringBuilder();        BufferedReader input = null;        String phpPath = "D:/xampp/p

2024-08-09 05:07:06
如何在UltraEdit中编译和运行Java程序
如何在UltraEdit中编译和运行Java程序

如何在UltraEdit中编译和运行Java程序工具原料:UE编辑器1点击“高级”,再点击“工具配置”。2点击“插入”,在“菜单项”名称上输入“编译java程序”,在“命令行”里输入“javac%n%e”,在工作目录上填“%p”。3切换到“输出”项,选择“输出到列表框”和“捕获输出”,点击“应用”。4同样,也可以定义运行java程序的工具,点击“插入”,在“菜

2024-03-17 15:40:42
如何在Python中调用C++代码或Java包中的函数?
如何在Python中调用C++代码或Java包中的函数?

如何在Python中调用C++代码或Java包中的函数?可以用Python的扩展来实现。Python本来是C实现的,封装二进制兼容的C++是很容易的。Java的话得通过JNI来实现,就是说在Python扩展里用C调用Java。另外,也可以写一个TCP服务来包装C++/Java的接口,通过网络来调用,这样更通用。使用python脚本对java文件进行编译打包发布,这个脚本如何写

2024-06-15 00:37:25
论述在Python程序中如何导入OpenCV以及matplotlib库中的pyplot
论述在Python程序中如何导入OpenCV以及matplotlib库中的pyplot

论述在Python程序中如何导入OpenCV以及matplotlib库中的pyplot首先分两个:第一个:Python程序中如何导入OpenCV解决方法:找到opencv源代码中的cv2文件夹复制到anaconda的lib文件夹中再导入cv2,就好了。然后python3.7中导入没有安装anaconda,只安装了p

2023-12-21 19:03:02
java程序如何在电脑上运行
java程序如何在电脑上运行

java程序如何在电脑上运行有两个方法:1。打开DOS。如果你的java文件已经是编译为class文件了,那就在命令行输入:2。如果你的文件是jar类型的。如下办法:在命令行输入:java   -d  jar文件名.jar3。如果是java源文件。在命令行输入:javac    java文件名.javajava    java文件名java怎么运行代码j

2024-04-01 18:22:22