java 如何调用 linux下的 。so文件
在 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");
怎么写都找不到库 加载不了 网上说的我看了些 没有太全的
请帮助做过的说下 白
------解决方案--------------------
给个参考:
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.java
javah 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.c
gcc -shared -WI abc.o -o libabc.so
复制libabc.so到jdk/jre/lib/i386下
终端运行:
java Abc
------解决方案--------------------JNI技术
调用第三方so(linux系)或dll(windows系),可以通过JNI来调用自己开发so或dll去调用第三方的so或dll
JNI是什么,LZ自己谷哥百度一下就知道了,1L就已经给出一个sample了