2010-08-27 164 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

相關問題