此问题可能早前曾在SO上提出过,请放心,我确实检查了所有可用的解决方案。仍然无法让它运行
我的问题完全如本文Shared native library in Tomcat UnsatisfiedLinkError
中所述独立Java应用程序运行良好。然而,对于Tomcat(9),它无法运行并抛出
java.lang.UnsatisfiedLinkError: third_party.org.chokkan.crfsuite.crfsuiteJNI.swig_module_init()V
at third_party.org.chokkan.crfsuite.crfsuiteJNI.swig_module_init(Native Method)
at third_party.org.chokkan.crfsuite.crfsuiteJNI.<clinit>(crfsuiteJNI.java:87)
at third_party.org.chokkan.crfsuite.Tagger.<init>(Tagger.java:39)
我知道我的DLL正在加载,我也检查了我的dll所在的文件夹,是在PATH变量中。我还检查了正在加载的类,并且DLL正在被加载。
我注意到SO
有3种类型的UnsatisfiedLinkError1)java.lang.UnsatisfiedLinkError:third_party.org.chokkan.crfsuite.crfsuiteJNI.swig_module_init() V 2)java.lang.UnsatisfiedLinkError:third_party.org.chokkan.crfsuite.crfsuiteJNI.swig_module_init() B 3)类加载器加载两次。
我相信 V ,最后确实意味着什么。但我无法弄明白究竟是什么?
我在上面分享的SO帖子中接受的答案之一声称它与版本有关。我不明白这是一个可接受的解决方案,因为它作为一个独立的Java应用程序运行时效果非常好。
已经浪费了很多时间,任何帮助都是值得的。
由于 Chahat
答案 0 :(得分:0)
我遇到了同样的问题。我终于找到了解决方案。它对我有用。
首先,我安装了libLBFGS和crfsuite。你可以在这里找到指令(http://www.chokkan.org/software/crfsuite/manual.html)。 libcrfsuite.so将安装在/ usr / local / lib
中其次,我编辑tomcat配置以加载本机库。我在tomcat bin文件夹中创建setenv.sh,使用content:
设置CATALINA_OPTS变量export CATALINA_OPTS =“ - Djava.library.path = / usr / local / bin:/ usr / local / lib”
最后,我使用自定义ServletContextListener并通过System.load()显式加载libcrfsuite.so。我去这个链接下载lib(https://github.com/vinhkhuc/jcrfsuite/tree/master/src/main/resources/crfsuite-0.12)
答案 1 :(得分:0)
我有类似的问题,但没有Tomcat。 我最终从他们的一个类复制逻辑,只是调用:
static {
try {
CrfSuiteLoader.load();
} catch (Exception e) {
throw new RuntimeException(e);
}
}