2010-08-27 167 views
2

我试图从我的jar中运行我的程序,名为PViz.jar。这个jar被放在一个目录中,它的所有依赖jar和它依赖的.so文件。我使用的是Mac OS X.当我运行此:Java似乎无法找到我的本地库

java -cp PViz.jar pviz.PVizStart 

然后我得到一个UnsatisfiedLinkError说: “在没有的java.library.path JOGL”。这是合理的,我使用jogl.jar,它使用本地库libjogl.so。

于是我运行此:

java -Djava.library.path=. -cp PViz.jar pviz.PVizStart 

,我也得到了同样的错误。但libjogl.so在当前目录中!我想也许我需要给整个路径,所以我想这:

java -Djava.library.path=/bla/bla/bla/libjogl.so -cp PViz.jar pviz.PVizStart 

,它仍然给了我同样的UnsatisifedLinkError。哎呀!

+0

您是否尝试设置'LD_LIBRARY_PATH'? – 2010-08-27 19:20:39

+0

您可以将环境变量“DYLD_LIBRARY_PATH”的值设置为您的.so位置并尝试它吗? – 2010-08-27 19:22:00

+0

我想在运行它时设置它。我试图让它很容易在朋友的系统上运行而不会干扰他的环境变量。 – evilfred 2010-08-27 19:34:36

回答

2

Here是一步一步解释如何在不同的操作系统,包括OS X上设置JOGL。

+0

嗯......以及它已经正常工作从月食... – evilfred 2010-08-27 22:26:02

+1

日食做相当数量的巫毒。 – zellus 2010-08-27 22:44:13

0

尝试将lib加载到应用程序主要类之一的静态初始化程序中。

实例(复制+从我的项目之一改名):

public class MainClass { 
    static { 
     System.loadLibrary("Your_native_lib_file_name"); // Note: do not include the file extension! 
    } 
} 

的本地库应该是在同一目录下的jar。

+0

我得到完全相同的错误。我试着用-Djava.library.path-来做这件事。和-Djava.library.path = /精确/路径/到/迪尔/和我仍然得到愚蠢的UnsatisfiedLinkError。 – evilfred 2010-08-27 19:45:17

+0

我用System.loadLibrary(“jogl”); libjogl.so和jar在同一个目录下。 – evilfred 2010-08-27 19:46:10

+0

本机库是否位于目录中各自的jar文件旁边? – Andy 2010-08-27 19:47:35

相关问题