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"));
}
}
展开
 我来答
嘉彧芩
2017-07-04 · TA获得超过738个赞
知道小有建树答主
回答量:424
采纳率:80%
帮助的人:87.4万
展开全部
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 类入口函数
追问
这个我搜到了,这里面介绍的是用java先生成so文件,再调用的,我这个so是别人生成给我用的,我调不通,不知道为什么。。
a517269253
2019-09-23 · 超过16用户采纳过TA的回答
知道答主
回答量:127
采纳率:0%
帮助的人:38.4万
展开全部
java端native 函数所在的包名 ,一定要注意,这个包名一定要和native端的 namespace一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-07-04
展开全部
找不到方法名,就换一个嘛~
追问
以免该热心网友误导大家,so文件中包含方法fnCDecrypt和fnCEncrypt,名字就是这个~但是调用失败。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式