lac icon indicating copy to clipboard operation
lac copied to clipboard

java调用,LacDemo测试运行报错

Open yeyuelong opened this issue 5 years ago • 17 comments

按文档操作,最后一步运行测试的时候报错,请问是什么原因呢? LacDemoTest

[root@localhost java]# ls com LacDemo.class LacDemo.java liblacjni.so [root@localhost java]# javac LacDemo.java [root@localhost java]# java LacDemo /opt/lac/models_general/lac_model Exception in thread "main" java.lang.UnsatisfiedLinkError: no lacjni in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) at java.lang.Runtime.loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) at LacDemo.(LacDemo.java:12) [root@localhost java]#

yeyuelong avatar Jun 29 '20 08:06 yeyuelong

可取消注释LacDemo.java 11行代码System.setProperty("java.library.path", ".");,设置在当前路径查找动态库。 默认情况下,是会在运行目录查找动态库的,可能更配置有关,偶而会出现这种情况。

Bond-H avatar Jun 29 '20 08:06 Bond-H

取消注释了,重新javac编译过了,也还是不行

yeyuelong avatar Jun 29 '20 08:06 yeyuelong

相同的错误信息吗?我们这边暂时无法复现这个问题

Bond-H avatar Jun 29 '20 10:06 Bond-H

是的,一样的错误信息:Exception in thread "main" java.lang.UnsatisfiedLinkError: no lacjni in java.library.path

yeyuelong avatar Jun 30 '20 01:06 yeyuelong

我也遇到了同样的问题,报了同样的错误。。。。。。

elninom avatar Jul 06 '20 04:07 elninom

是的,一样的错误信息:Exception in thread "main" java.lang.UnsatisfiedLinkError: no lacjni in java.library.path

把代码中加载库文件路径修改就好了,主要就是LAC这个文件也要改

elninom avatar Jul 06 '20 05:07 elninom

咋回事呢?我的也总是提示一样的错误信息,我把路径改成绝对路径也不行,我还把com/baidu/nlp下LAC.java加载库的路径也改了,还是不行,明明我的那个文件夹下就有liblacjni.so这个库呀!!!

elihuan1990 avatar Jul 10 '20 05:07 elihuan1990

按文档操作,最后一步运行测试的时候报错,请问是什么原因呢? LacDemoTest

[root@localhost java]# ls com LacDemo.class LacDemo.java liblacjni.so [root@localhost java]# javac LacDemo.java [root@localhost java]# java LacDemo /opt/lac/models_general/lac_model Exception in thread "main" java.lang.UnsatisfiedLinkError: no lacjni in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) at java.lang.Runtime.loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) at LacDemo.(LacDemo.java:12) [root@localhost java]#

请问你的按照他给的方法解决了嘛?我的明明文件夹下就有这个liblacjni.so,但是还是提示这个错误!!

elihuan1990 avatar Jul 10 '20 05:07 elihuan1990

没解决呢,暂时做别的事情去了

yeyuelong avatar Jul 10 '20 05:07 yeyuelong

应该是跟JAVA的环境配置有关,查找链接库时不会到当前目录查找,可以通过System.load()函数加载绝对路径的动态库 如:System.load("F:/lac/java/lacjni.dll");

Bond-H avatar Jul 10 '20 06:07 Bond-H

应该是跟JAVA的环境配置有关,查找链接库时不会到当前目录查找,可以通过System.load()函数加载绝

我的问题解决了,将LacDemo.java里 //System.setProperty("java.library.path", "."); //System.loadLibrary("lacjni"); System.load("/home/work/lihuan22/lac-master/output/java/liblacjni.so"); 用load加载的绝对路径。

elihuan1990 avatar Jul 10 '20 07:07 elihuan1990

应该是跟JAVA的环境配置有关,查找链接库时不会到当前目录查找,可以通过System.load()函数加载绝对路径的动态库 如:System.load("F:/lac/java/lacjni.dll");

给你们提点建议,能把windows和linux环境配置步骤分别说明一下,然后工具的版本号也说明一下。我配置这些环境都搞了一周了。。。。

elihuan1990 avatar Jul 10 '20 07:07 elihuan1990

呃,我是在linux环境下的

yeyuelong avatar Jul 10 '20 07:07 yeyuelong

给你们提点建议,能把windows和linux环境配置步骤分别说明一下,然后工具的版本号也说明一下。我配置这些环境都搞了一周了。。。。 @elihuan1990 嗯嗯,好的,感谢建议,因为最近几天相关issue反馈比较多,所以文档已经进行过更新了,Windows的编译可以参考文档https://github.com/baidu/lac/blob/master/compile4windows.md

Bond-H avatar Jul 10 '20 07:07 Bond-H

呃,我是在linux环境下的

@yeyuelong linux和Windows对于该问题的处理方式是一样的,

System.load("/home/work/lihuan22/lac-master/output/java/liblacjni.so");

如果细心留意一下这里的路径,应该也是Linux的环境

Bond-H avatar Jul 10 '20 07:07 Bond-H

static { // 装载LAC链接库,需要lacjni的链接库文件放到当前目录下 System.out.println(System.getProperty("java.library.path")); //System.loadLibrary("lacjni"); System.load("/codes/lac/output/java/liblacjni.so"); }

我改成这样还是报错

Exception in thread "main" java.lang.UnsatisfiedLinkError: com..api.lac.LAC.init(Ljava/lang/String;)V at com..api.lac.LAC.init(Native Method) at com..api.lac.LAC.(LAC.java:11) at com..api.lac.LacDemo.main(LacDemo.java:25)

我这个错不是找不到

gs80140 avatar Jul 28 '20 03:07 gs80140

[root@k8s-203 java]# java LacDemo /data/nlp/app/back/lac/output/java/model_v2.1/models_general/lac_model WARNING: Logging before InitGoogleLogging() is written to STDERR E0416 17:21:30.809422 9562 analysis_config.cc:190] Please compile with MKLDNN first to use MKLDNN 我是卡在这不动了,什么鬼

wangruduo avatar Apr 16 '21 09:04 wangruduo