linux上使用java加载so动态库报错
Exceptioninthread"main"java.lang.UnsatisfiedLinkError:SoFileOperate.fnCEncrypt(Ljava/...
Exception in thread "main" java.lang.UnsatisfiedLinkError: SoFileOperate.fnCEncrypt(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
应该是找到so库的路径了吧,但是找不到方法名?
代码:
public class SoFileOperate {
static {
System.out.println( System.getProperty("java.library.path"));
System.load("/crawler/linux-Encode.so");
}
public native static String fnCDecrypt(String encodeStr, String secretKey);
public native static String fnCEncrypt(String decodeStr, String secretKey);
public static void main(String[] args) {
String fnCEncrypt = fnCEncrypt("test", "ghx");
System.out.println("加密结果:"+fnCEncrypt);
System.out.println("解密结果:"+fnCDecrypt(fnCEncrypt, "ghx"));
}
} 展开
应该是找到so库的路径了吧,但是找不到方法名?
代码:
public class SoFileOperate {
static {
System.out.println( System.getProperty("java.library.path"));
System.load("/crawler/linux-Encode.so");
}
public native static String fnCDecrypt(String encodeStr, String secretKey);
public native static String fnCEncrypt(String decodeStr, String secretKey);
public static void main(String[] args) {
String fnCEncrypt = fnCEncrypt("test", "ghx");
System.out.println("加密结果:"+fnCEncrypt);
System.out.println("解密结果:"+fnCDecrypt(fnCEncrypt, "ghx"));
}
} 展开
3个回答
展开全部
1、编写 java 类,先上代码
[html] view plain copy
package com.hongquan.jni;
public class HelloJNI {
// 声明 so 库中的方法
public native static String sayHi(String name);
// 载入 so 动态链接库
static {
System.load("/home/hongquan/main.so");
}
// java 类入口函数
[html] view plain copy
package com.hongquan.jni;
public class HelloJNI {
// 声明 so 库中的方法
public native static String sayHi(String name);
// 载入 so 动态链接库
static {
System.load("/home/hongquan/main.so");
}
// java 类入口函数
追问
这个我搜到了,这里面介绍的是用java先生成so文件,再调用的,我这个so是别人生成给我用的,我调不通,不知道为什么。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询