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

[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 11行代码System.setProperty("java.library.path", ".");,设置在当前路径查找动态库。
默认情况下,是会在运行目录查找动态库的,可能更配置有关,偶而会出现这种情况。
取消注释了,重新javac编译过了,也还是不行
相同的错误信息吗?我们这边暂时无法复现这个问题
是的,一样的错误信息:Exception in thread "main" java.lang.UnsatisfiedLinkError: no lacjni in java.library.path
我也遇到了同样的问题,报了同样的错误。。。。。。
是的,一样的错误信息:Exception in thread "main" java.lang.UnsatisfiedLinkError: no lacjni in java.library.path
把代码中加载库文件路径修改就好了,主要就是LAC这个文件也要改
咋回事呢?我的也总是提示一样的错误信息,我把路径改成绝对路径也不行,我还把com/baidu/nlp下LAC.java加载库的路径也改了,还是不行,明明我的那个文件夹下就有liblacjni.so这个库呀!!!
按文档操作,最后一步运行测试的时候报错,请问是什么原因呢?
[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,但是还是提示这个错误!!
没解决呢,暂时做别的事情去了
应该是跟JAVA的环境配置有关,查找链接库时不会到当前目录查找,可以通过System.load()函数加载绝对路径的动态库
如:System.load("F:/lac/java/lacjni.dll");
应该是跟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加载的绝对路径。
应该是跟JAVA的环境配置有关,查找链接库时不会到当前目录查找,可以通过System.load()函数加载绝对路径的动态库 如:
System.load("F:/lac/java/lacjni.dll");
给你们提点建议,能把windows和linux环境配置步骤分别说明一下,然后工具的版本号也说明一下。我配置这些环境都搞了一周了。。。。
呃,我是在linux环境下的
给你们提点建议,能把windows和linux环境配置步骤分别说明一下,然后工具的版本号也说明一下。我配置这些环境都搞了一周了。。。。 @elihuan1990 嗯嗯,好的,感谢建议,因为最近几天相关issue反馈比较多,所以文档已经进行过更新了,Windows的编译可以参考文档https://github.com/baidu/lac/blob/master/compile4windows.md
呃,我是在linux环境下的
@yeyuelong linux和Windows对于该问题的处理方式是一样的,
System.load("/home/work/lihuan22/lac-master/output/java/liblacjni.so");
如果细心留意一下这里的路径,应该也是Linux的环境
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.
我这个错不是找不到
[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 我是卡在这不动了,什么鬼