1

我可以在我的 mac 上运行带有 cmd 行的一些依赖项的 java 程序,但是当我尝试在 linux SUSE 11 机器上运行它时,我得到了它:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no myNativeLib in java.library.path

这是我正在运行的 cmd 行:

java -Djava.library.path=../lib -cp ../jar/a-jar.jar:. MyMainClass

任何帮助表示赞赏!

4

2 回答 2

1

我建议使用绝对路径java.library.path。至少您消除了相对路径分辨率可能出现的问题。

另外,只是为了确认一下,您的 lib 中确实有 Linux 库,对吧?Mac 1 将无法正常工作。

于 2011-06-21T01:03:12.230 回答
0

我要冒昧地假设(冒着遭到大量反对票的风险)您正在尝试使用 oracle 的本机数据库驱动程序。

如果它确实是您正在使用的数据库驱动程序,您可以放弃本机版本,并使用 -cp 扩展名将 .jar 瘦客户端简单地包含在您的类路径中。这可能需要一些代码更改,这样您就不会尝试调用本机驱动程序。

如果您一心想要使用本机驱动程序,或者您需要使用本机驱动程序,因为代码依赖于它。您需要确保将 java.library.path 变量设置为包含二进制驱动程序文件的目录(通常以 .so 扩展名表示)。

还要确保这些驱动程序文件(因为它们是本机二进制文件)已为您的 linux 发行版编译,而不仅仅是从 mac 安装中方便地复制。

如果你没有做任何这些事情,请随意忽略我所说的一切。

于 2011-06-21T01:20:00.247 回答