我有一个可以读取和处理HDF5文件的Java程序。当我在Eclipse (windows OS)上运行它时,我得到了下面的错误,我必须添加一个运行配置VM参数(-Dncsa.hdf.hdf5lib.H5.hdf5lib=\jhdf5.dll)来添加库并正常运行。现在我正在导出一个可运行的Jar文件,我再次得到错误,可能是因为它没有继承VM参数。
java.lang.UnsatisfiedLinkError: no jhdf5 in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at ncsa.hdf.hdf5lib.H5.loadH5Lib(H5.java:347)
at ncsa.hdf.hdf5lib.H5.<clinit>(H5.java:274)
at ncsa.hdf.hdf5lib.HDF5Constants.<clinit>(HDF5Constants.java:28)
at ncsa.hdf.object.h5.H5File.<init>(H5File.java:99)
at ncsa.hdf.object.h5.H5File.<init>(H5File.java:132)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at ncsa.hdf.object.FileFormat.<clinit>(FileFormat.java:229)
at hdf5Tool.HDF5Interface.readNodeStructureH5(HDF5Interface.java:73)
at wizardPages.DREAMWizard$STORMData$1.run(DREAMWizard.java:340)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)基于this post,我看到有两种可能的选择:创建一个shell脚本或应用程序包来合并VM参数。
但是,我很好奇的是,有一种更简单的方法来标识可运行JAR文件的库。有什么建议吗?
发布于 2019-05-01 22:37:30
不确定您是否有特定的需求,但也许可以查看jhdf.io它是一个纯Java HDF5库,因此不需要加载本机库。它应该很容易添加到具有标准依赖项的Maven或Gradle项目中。
这是一个相当早期的阶段,但应该支持从大多数HDF5文件读取数据,如果它不工作,打开一个问题。
免责声明:我是jhdf的作者,所以可能有偏见。
https://stackoverflow.com/questions/55768603
复制相似问题