2016-08-18 70 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