2

问题

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

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

-Djava.library.path=/workspace/dapper/java/lib/native/macosx:...

创建符号链接

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

.so目录添加到 .bashrc

我尝试将.so目录添加到PATH

PATH=$PATH:/Users/adamatan/workspaces/trunk/dapper/java/lib/native/macosx

LD_LIBRARY_PATH

export LD_LIBRARY_PATH="/Users/adamatan/workspaces/trunk/dapper/java/lib/native/macosx"

打印java.library.path

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

System.out.println(System.getProperty("java.library.path"));

并得到:

/workspace/dapper/java/lib/native/macosx:....

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

调试思路?

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

4

1 回答 1

4

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

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

于 2012-12-09T17:09:53.973 回答