【发布时间】:2014-12-23 06:46:30
【问题描述】:
我正在开发一个需要一些库的 java 组件,即 Windows 系统的 .dll 和 Linux 系统的 .so 文件。所以我在netbeans中准备了一个java应用程序并添加了一些依赖jar并构建了项目。
在 Windows 上执行:
当我尝试在 Windows 系统上使用命令 java -jar appName.jar 运行 jar 文件时,我得到了 java.lang.UnsatisfiedLinkError,所以我在像 java -Djava.library.path=full\\path\\to\\libs -jar appName.jar 这样执行时指定了 java.library.path,它在 Windows 上成功运行。
在 Linux(ubuntu) 上执行:
当我尝试在 ubuntu 上使用相同的命令 java -Djava.library.path=/path/to/libs -jar appName.jar 执行相同的 jar 文件时,我收到错误消息说在指定位置找不到某些 .so 文件(我检查了文件位置和权限,一切正常)
已更新(添加错误):
ubuntu@ubuntu-HP-dx2480-MT-KL969AV:~/Desktop$ java -Djava.library.path=/home/ubuntu/Desktop/bin -jar JavaApplication4.jar
使用库路径 bin 在 Thread[AWT-EventQueue-0,6,main] 上初始化 bin/jcef_helper:加载共享库时出错:libcef.so: 无法打开共享对象文件:没有这样的文件或目录
包含 bin 文件夹
-rwxr-xr-x 1 ubuntu ubuntu 1483321 Jun 18 2014 cef.pak
-rwxr-xr-x 1 ubuntu ubuntu 3258231 Jun 18 2014 devtools_resources.pak
-rwxr-xr-x 1 ubuntu ubuntu 971264 Jun 11 2014 ffmpegsumo.dll
-rwxr-xr-x 1 ubuntu ubuntu 9994752 Jun 11 2014 icudt.dll
-rwxr-xr-x 1 ubuntu ubuntu 429568 Jun 18 2014 jcef.dll
-rwxr-xr-x 1 ubuntu ubuntu 481488 Jun 18 2014 jcef_helper
-rwxr-xr-x 1 ubuntu ubuntu 233984 Jun 18 2014 jcef_helper.exe
-rwxr-xr-x 1 ubuntu ubuntu 53280768 Jun 11 2014 libcef.dll
-rwxr-xr-x 1 ubuntu ubuntu 105317136 Jun 18 2014 libcef.so
-rwxr-xr-x 1 ubuntu ubuntu 1309288 Jun 18 2014 libffmpegsumo.so
-rwxr-xr-x 1 ubuntu ubuntu 1047296 Jun 18 2014 libjcef.so drwxrwxrwx 2 ubuntu ubuntu 4096 Dec 23 11:29 locales
通过一些搜索,我知道我已经尝试使用 LD_LIBRARY_PATH 环境变量,所以我创建了一个带有命令的 sh 文件:
export LD_LIBRARY_PATH=/path/to/libs
java -jar /path/to/appName.jar
当我运行 sh 文件时,我的程序运行成功。
所以我的问题是为什么 java.library.path 不适用于 ubuntu (linux)?是不是java.library.path 只适用于 Windows?
【问题讨论】:
-
-Djava.library.path=path/to/libs这是一个错字还是你在这里使用相对路径? -
抱歉打错了,我使用完整路径,如 Windows 的 C:\winlibs\ 和 \home\ubuntu\Desktop\Linuxlibs
-
您应该在此处提供错误消息以获得更好的答案。
-
@secmask,添加了有问题的错误。请找到更新(添加错误):
-
您指定
/home/ubuntu/Desktop/bin,可能这里的库需要其他不在这里的库吗?记住java.library.path可以容纳多个路径。