首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.lang.UnsatisfiedLinkError: java.library.path中没有<LIBRARY>

java.lang.UnsatisfiedLinkError: java.library.path中没有<LIBRARY>
EN

Stack Overflow用户
提问于 2012-12-09 21:34:03
回答 1查看 7.4K关注 0票数 2

问题所在

我一直在尝试在我自己的Mac上运行单元测试。该测试在Linux服务器上运行良好,但在本地失败,跟踪如下:

代码语言:javascript
复制
java.lang.UnsatisfiedLinkError: no fedel_client in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1045)
    ....

我尝试过的

从服务器复制.so文件

我已经将fedel_client.so从服务器复制到本地计算机上的/workspace/dapper/java/lib/native/macosx,并将其添加到java.library.path

代码语言:javascript
复制
-Djava.library.path=/workspace/dapper/java/lib/native/macosx:...

创建符号链接

我已经创建了一个从fedel_clinetfedel_clinet.so的符号链接,以防Java正在寻找前者(没有.so扩展)。

在.bashrc中添加.so目录

我尝试过在PATH中添加.so目录

代码语言:javascript
复制
PATH=$PATH:/Users/adamatan/workspaces/trunk/dapper/java/lib/native/macosx

LD_LIBRARY_PATH

代码语言:javascript
复制
export LD_LIBRARY_PATH="/Users/adamatan/workspaces/trunk/dapper/java/lib/native/macosx"

打印java.library.path

我打印了java.library.path,以查看Eclipse环境中的更改是否已传播到JVM:

代码语言:javascript
复制
System.out.println(System.getProperty("java.library.path"));

并得到了:

代码语言:javascript
复制
/workspace/dapper/java/lib/native/macosx:....

我在Eclipse配置中放置的精确值。

调试思路?

对于上述所有解决方案,我都得到了完全相同的错误。你知道如何调试这个问题吗?我能从Java得到更详细的错误消息吗?文件是未找到还是未加载?如果它没有加载,为什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-10 01:09:54

我可能读错了,但听起来像是您把本地库(libfedel_client.so)从Linux服务器复制到了您自己的Mac上。如果是这样的话,这肯定行不通。你不能在你的Mac上使用Linux本机库,你需要在Mac上重新编译它来生成一个libfedel_client.dylib

根据您正在使用的Apple Java运行时的版本,您可能需要使用.jnilib扩展。早期的运行时使用.jnilib扩展而不是.dylib,现在仍然支持这两个扩展(尽管.dylib现在是默认扩展)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13787849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档