我可以在我的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
任何帮助表示赞赏!
答案 0 :(得分:1)
我建议使用java.library.path
的绝对路径。至少可以消除相对路径分辨率可能出现的问题。
另外,为了确认,你在lib中有Linux库,对吧? Mac将无法正常工作。
答案 1 :(得分:0)
我要走出困境并假设(冒着一堆downvotes)你正在尝试使用oracle的本机数据库驱动程序。
如果它确实是您正在使用的数据库驱动程序,您可以保留本机版本,只需使用-cp扩展名将.jar瘦客户机包含在类路径中。这可能需要进行一些代码更改,以免您尝试调用本机驱动程序。
如果您一直在使用本机驱动程序,或者您需要,因为代码依赖于它。您需要确保将java.library.path变量设置为包含二进制驱动程序文件的目录(通常用.so扩展名表示)。
还要确保这些驱动程序文件(因为它们是本机二进制文件)已经编译好,以便您分发Linux,而不仅仅是从mac安装中方便地复制。
如果你没有做任何这些事情,可以随意忽略我所说的一切。