Exception in thread "main" java.lang.UnsatisfiedLinkError

时间:2023-01-21 15:47:53

import ICTCLAS.ICTCLAS50;

import java.util.*;
import java.io.*; 

public class Test extends ICTCLAS50{
    public static void main(String[] args)
{
         try
{
Test testICTCLAS50 = new Test();
//分词所需库的路径
String argu = ".";
//初始化
if (testICTCLAS50.ICTCLAS_Init(argu.getBytes("GB2312")) == false)
{
System.out.println("Init Fail!");
return;
}
else { System.out.println("Init Succeed!"); }

 String sInput="点击下载超女纪敏佳深受观众喜爱。禽流感爆发在非典之后。";
byte nativeBytes[] = testICTCLAS50.ICTCLAS_ParagraphProcess(sInput.getBytes("GB2312"), 0, 1);
System.out.println(nativeBytes.length);
String nativeStr = new String(nativeBytes, 0, nativeBytes.length, "GB2312");
System.out.println("The result is :" + nativeStr);
testICTCLAS50.ICTCLAS_Exit();
}
catch (Exception ex){

}
}


这是中科院分词软件提供的jni接口里的样例代码,我运行的时候报出下面错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: ICTCLAS.ICTCLAS50.ICTCLAS_Init([B)Z
at ICTCLAS.ICTCLAS50.ICTCLAS_Init(Native Method)
at test.Test.main(Test.java:17)

不懂?求助!

5 个解决方案

#1


就木有人回答么~~=。=

#2


哎。。。这个问题我也碰到过

#3


最开始尝试了很多方便,比如修改classpath,修改usr_path等,仍然会报错。后来将ICTCLAS50.java放在他给的例子里面有个包 ICTCLAS.I3S.AC下,结果运行正确。可能是开发ICTCLAS50为了保护版权考虑,如果不在package ICTCLAS.I3S.AC下就会报错。

#4


引用 3 楼 ss947722199 的回复:
最开始尝试了很多方便,比如修改classpath,修改usr_path等,仍然会报错。后来将ICTCLAS50.java放在他给的例子里面有个包 ICTCLAS.I3S.AC下,结果运行正确。可能是开发ICTCLAS50为了保护版权考虑,如果不在package ICTCLAS.I3S.AC下就会报错。


非常感谢!! 现在不报错了,但是控制台总是输出“Init Fail!”
我记得使用分词工具超过30天的话就无效,工具就老提示初始化失败,难道java接口也是吗?

#5


非常 感谢,果然是包路径的问题

#1


就木有人回答么~~=。=

#2


哎。。。这个问题我也碰到过

#3


最开始尝试了很多方便,比如修改classpath,修改usr_path等,仍然会报错。后来将ICTCLAS50.java放在他给的例子里面有个包 ICTCLAS.I3S.AC下,结果运行正确。可能是开发ICTCLAS50为了保护版权考虑,如果不在package ICTCLAS.I3S.AC下就会报错。

#4


引用 3 楼 ss947722199 的回复:
最开始尝试了很多方便,比如修改classpath,修改usr_path等,仍然会报错。后来将ICTCLAS50.java放在他给的例子里面有个包 ICTCLAS.I3S.AC下,结果运行正确。可能是开发ICTCLAS50为了保护版权考虑,如果不在package ICTCLAS.I3S.AC下就会报错。


非常感谢!! 现在不报错了,但是控制台总是输出“Init Fail!”
我记得使用分词工具超过30天的话就无效,工具就老提示初始化失败,难道java接口也是吗?

#5


非常 感谢,果然是包路径的问题