2024-04-17 23:10:00 | 我爱编程网
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运行程序
你这是要做什么功能?至于这么麻烦么?
Java匹配替换代码,
这个String.replace就好了;也可以匹配正则表达式;
看完你写这个,感觉太乱了,不知道你要表达啥一次想要怎么样的结果就你那个
str=395654545;你是要去重复?
让我看着咋跟md5加密算法那些代码有点像啊
我爱编程网(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中就可以调用了(要用到第二步生成的类)!:)
java如何调用c程序使用JNI.一、首先需要编写一个native的java方法。public class Test{ static{ System.loadLibrary("mydll"); } public static void main(String[] args) { new Test().test(); } public native vo
怎样打开java?1、首先我们打开myeclipse,点击左上角的File。2、接着选择New,选择JavaProject。3、在创建java项目的页面,首先给项目命名,点击next。4、一般在这里没有什么要设置的,点击下面的Finish。5、项目创建完毕之后,我们需要创建类文件,也就是Class文件,在源文件夹src上右击,选择New,选择Class。6、
JAVA实现音频播放这个程序只要写对了音乐文件的URL地址,例如:newURL("file:/C:/tmp/1/WindowsDing.wav");就可以播放音乐,除了可以播放.wav格式的音乐,还可以播放.au格式的音乐。另外,如果你不希望音乐循环播放,你可以去掉audio1.loop();这一语句。importjava.applet.AudioClip;importjav
如何在java程序中调用php文件 public String execPHP(String scriptName, String param) { StringBuilder output = new StringBuilder(); BufferedReader input = null; String phpPath = "D:/xampp/p
如何在UltraEdit中编译和运行Java程序工具原料:UE编辑器1点击“高级”,再点击“工具配置”。2点击“插入”,在“菜单项”名称上输入“编译java程序”,在“命令行”里输入“javac%n%e”,在工作目录上填“%p”。3切换到“输出”项,选择“输出到列表框”和“捕获输出”,点击“应用”。4同样,也可以定义运行java程序的工具,点击“插入”,在“菜
如何在Python中调用C++代码或Java包中的函数?可以用Python的扩展来实现。Python本来是C实现的,封装二进制兼容的C++是很容易的。Java的话得通过JNI来实现,就是说在Python扩展里用C调用Java。另外,也可以写一个TCP服务来包装C++/Java的接口,通过网络来调用,这样更通用。使用python脚本对java文件进行编译打包发布,这个脚本如何写
论述在Python程序中如何导入OpenCV以及matplotlib库中的pyplot首先分两个:第一个:Python程序中如何导入OpenCV解决方法:找到opencv源代码中的cv2文件夹复制到anaconda的lib文件夹中再导入cv2,就好了。然后python3.7中导入没有安装anaconda,只安装了p
java程序如何在电脑上运行有两个方法:1。打开DOS。如果你的java文件已经是编译为class文件了,那就在命令行输入:2。如果你的文件是jar类型的。如下办法:在命令行输入:java -d jar文件名.jar3。如果是java源文件。在命令行输入:javac java文件名.javajava java文件名java怎么运行代码j
2025-02-01 20:24:39
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01
2024-09-10 08:50:00