2016-08-18 73 views
2

的java的位置,我編譯依賴於jhdf5庫一個罐子,並試圖LD_LIBRARY_PATH=$PWD/lib java -classpath ./target/scala-2.11/myassembly.jar -Djava.library.path=$PWD/lib net.myproject.mainClass blah blah blah告訴庫

運行它,我得到一個錯誤:

java.lang.UnsatisfiedLinkError: jhdf5 (Not found in java.library.path) 
    at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1256) 
    at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:1226) 
    at java.lang.System.loadLibrary(System.java:537) 
    at hdf.hdf5lib.H5.loadH5Lib(H5.java:317) 
    at hdf.hdf5lib.H5.<clinit>(H5.java:257) 

即使庫(libjhdf5.so)在目錄中。

我錯過了什麼?

+0

你在Windows上運行這個?還是linux? – kuhajeyan

+0

unix下(在其中一個NERSC系統上) – AatG

+0

我想你可能會爲不同的架構(例如32位/ 64)編譯庫。並且使用諸如-Djava.library.path或LD_LIBRARY_PATH之類的變量就足夠了。不是都。你確定$ PWD變量被正確解釋了嗎? – kuhajeyan

回答

0

請確保/ usr/lib或/ usr/lib64中的原生HDF5 c庫該程序使用這些原生c庫。

https://github.com/WimS83/XSQConverter/blob/master/src/xsqconvertergit/interfaces/librariesZipped/hdf5_native_libs.zip

+0

我在共享系統上,所以我無法控制庫的位置,但我添加了libhdf5.so對LD_LIBRARY_PATH和-Djava.library.path的路徑。這並不能解決錯誤。 – AatG

+0

問題在於我沒有共享庫版本的hdf5庫,只有靜態版本,而Java正在尋找共享庫。 – AatG