在 window 上写代码 然后部署到 linux服务器 调用这个 .so 文件 这个服务java 如何调用 linux下的 。so文件给我的 接口是 start(long useid)让我调用这个起服务 这个文件在 /cstor/lib/ 下static {
// 加载动态库 , .so 名称
System.loadLibrary("/cstor/Lib/NVRCModule");
//System.loadLibrary(libname)
}
System.loadLibrary("/cstor/Lib/NVRCModule.so"); System.loadLibrary("NVRCModule"); 怎么写都找不到库 加载不了 网上说的我看了些 没有太全的
请帮助做过的说下 白
// 加载动态库 , .so 名称
System.loadLibrary("/cstor/Lib/NVRCModule");
//System.loadLibrary(libname)
}
System.loadLibrary("/cstor/Lib/NVRCModule.so"); System.loadLibrary("NVRCModule"); 怎么写都找不到库 加载不了 网上说的我看了些 没有太全的
请帮助做过的说下 白
java类:public class Abc {
static {
System.loadLibrary("abc");
}public native static String getAbc();public static void main(String s[]) {
System.out.println(getAbc());
}
}#~~~~~~~~~~~~~~~~~终端敲入:java Abc.javajavah Abc#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~````生成Abc.h的头文件,内容如下:/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_hexun_wangchong_admin_gethardware_GetHardWareInfo */#ifndef _Included_Abc_GetAbc()
#define _Included_Abc_GetAbc()
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_hexun_wangchong_admin_gethardware_GetHardWareInfo
* Method: getHardWareInfo
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_Abc_getAbc
(JNIEnv *, jobject);#ifdef __cplusplus
}
#endif
#endif#~~~~~~~~~~~~~~~~~~写Abc.c文件,内容:#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/io.h>
#include "org_hexun_wangchong_admin_gethardware_GetHardWareInfo.h"JNIEXPORT jstring JNICALL Java_Abc_getAbc
(JNIEnv *env, jobject t)
{
char *hd_sn_ptr="hello world"; //////////////////
jstring str ;
str = (*env)->NewStringUTF(env,hd_sn_ptr);
///////////////////////////
return str;
}#~~~~~~~~~~~~~~~~~~~~~~~生成so库gcc -I/jdk/include -fPIC -c abc.cgcc -shared -WI abc.o -o libabc.so复制libabc.so到jdk/jre/lib/i386下终端运行:java Abc
调用第三方so(linux系)或dll(windows系),可以通过JNI来调用自己开发so或dll去调用第三方的so或dll
JNI是什么,LZ自己谷哥百度一下就知道了,1L就已经给出一个sample了
我改成main() 用 java com.xxx.xx.Abc 这样就可以执行,这是为什么啊????有没有高手回答一下呀