解决linux环境下no XXX in java.library.path问题

解决linux环境下no XXX in java.library.path问题

最近开发一个结合海康摄像头的sdk项目,真是狗。遇到一个问题,在windows上能跑,在linux上就一直跑不起来。
首先发现在windows上装了海康的一个叫MvCamera的软件,所以系统中是有dll文件的。于是笔者就在linux上也下载了这个软件。
当然他是一个压缩包。解压后我放到了/usr/lib目录下。

接下来就是解决问题的步骤

  1. 使用-Djava.library.path=/user/lib 指定java.library.path的路径,将so文件放到指定路径下 如: java -Djava.library.path=/user/lib -jar 你的项目.jar

  2. System.getProperty(“java.library.path”)获取库路径再将so文件放入到输出的路径中的一个

  3. 如果前两个死活还是找不到文件,可以放到 (你的JAVA安装路径){JAVA_HOME}/jre/lib/amd64/ 下面

  4. 出现错误xxx.so 无法打开共享对象,该文件或目录不存在时,vim /etc/profile 最后添加上export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib(冒号后面的路径为so文件存放的路径)

解决这个问题:

(1)在系统中查找这个文件(当然要保证系统中已经有这个.so文件,只是查找路径没有设置正确而已):

sudo find / -name libjson_linux-gcc-4.6_libmt.so //其中“/”应该是根目录

结果:/home/liu/Desktop/jsoncpp-src-0.5.0/libs/linux-gcc-4.6/libjson_linux-gcc-4.6_libmt.so

(2)将.so文件路径的目录添加到/etc/ld.so.conf

sudo vim /etc/ld.so.conf

文件末尾新添加一行,/home/liu/Desktop/jsoncpp-src-0.5.0/libs/linux-gcc-4.6

(3)使得修改生效

sudo /sbin/ldconfig

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这个错误提示通常是由于缺少某个库文件或者库文件路径不正确导致的。在Java程序中,如果需要使用本地库文件,需要将库文件路径添加到java.library.path系统属性中。如果没有添加或者添加的路径不正确,就会出现这个错误提示。解决方法是检查是否缺少库文件,或者将库文件路径添加到java.library.path系统属性中。 ### 回答2: “No xxx in java.library.path”这个错误通常是出现在Java应用程序中,它表示Java虚拟机无法找到所需的本地库,其中xxx是需要加载的本地库的名称。 在Java中,本地库是使用本机语言(例如C或C++)编写的动态链接库。Java程序可以调用这些库以实现高效的系统级功能,如图形处理,数据库连接等。但是,Java虚拟机(JVM)需要知道库的位置才能加载它们。Java虚拟机将在每次启动或每次需要库时搜索java.library.path中指定的目录。 因此,当您看到“no xxx in java.library.path”错误消息时,意味着Java虚拟机无法在指定的目录中找到所需的xxx库。 通常,这种错误通常是由以下原因引起的: 1.库文件不存在。在指定的目录中找不到库文件时,将出现此错误。您需要检查文件路径和名称是否正确并确保文件已存在。 2.库文件位于不兼容的操作系统或CPU上。在一些情况下,您可能已经安装了错误的本地库文件,该文件针对不兼容的操作系统或CPU。您需要确保下载的本地库适用于您正在运行的操作系统和CPU。 3.库文件未包含在java.library.path中。您需要确保将库文件正确存储在java.library.path变量中指定的某个目录中,以确保Java虚拟机可以加载文件。如果未将库文件添加到java.library.path中,则需要将其添加到该路径中。 4.应用程序依赖的其他库不在java.library.path中。某些本地库可能依赖于其他本地库,因此如果这些依赖项未正确设置,则可能会导致此错误。您需要确保包含所需的所有库文件在java.library.path中。 总之,如果出现“no xxx in java.library.path”错误消息,请检查文件路径和名称是否正确,确保文件存在并且适用于您的操作系统和CPU,并确保将其正确添加到java.library.path中。 ### 回答3: "No xxx in java.library.path"是一个常见的错误。它发生在Java应用程序试图调用一个本地库(Native Library)并且找不到该库的路径时。当Java虚拟机尝试调用本地库时,它会在指定的路径中(默认路径在操作系统环境变量中)查找该库文件。如果找不到该库文件,Java程序就会抛出"No xxx in java.library.path"的错误。 通常,Java程序使用Native Library来执行一些本地操作,这些操作包括C/C++代码的执行、调用操作系统底层的API以及其他相关操作。如果应用程序没有为Native Library提供正确的路径或选择错误的jar包,就会发生该错误。 要解决这个问题,我们可以采取以下措施: 1. 确认库是否存在 首先,我们应该确认指定的库是否存在于本地路径中。如果不存在,我们应该手动复制该库到正确的路径。 2. 检查环境变量 检查操作系统环境变量(如PATH、LD_LIBRARY_PATH等),确保它们包含目标库所在的文件夹路径。如果没有,请手动将其添加到路径中。 3. 检查Java.library.path 检查-java.library.path参数,确认它的值包含目标库所在的文件夹路径。如果没有,请手动添加。 4. 使用System.loadLibrary() 使用System.loadLibrary()方法来加载库,而不是手动指定路径。这会让Java虚拟机自动在指定的路径中查找库文件。 最后,我们还可以使用Java的诊断工具来帮助我们定位和解决该错误。例如,可以使用jstack、jmap、jstat和jconsole等工具来查看Java虚拟机的状态并监视正在运行的程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值