【问题标题】:How to prevent "No jhdf5 in java.library.path" error in runnable JAR如何防止可运行 JAR 中出现“java.library.path 中没有 jhdf5”错误
【发布时间】:2019-09-10 02:58:03
【问题描述】:

我有一个读取和处理 HDF5 文件的 Java 程序。当我在 Eclipse(Windows 操作系统)上运行它时出现以下错误,并且必须添加运行配置 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 文件的库。有什么建议吗?

【问题讨论】:

    标签: java hdf5


    【解决方案1】:

    不确定您是否有特定需求,但可以查看jhdf.io,它是一个纯 Java HDF5 库,因此不需要加载本机库。添加到具有标准依赖项的 Maven 或 Gradle 项目应该很简单。

    这是一个相当早期的阶段,但应该支持从大多数 HDF5 文件中读取数据,如果它不起作用会打开一个问题。

    免责声明:我是 jhdf 的作者,所以可能有偏见。

    【讨论】:

    • 这个项目看起来很棒,感谢您的努力!我在自述文件中看到了一个注释,它目前的目标是只读兼容性。你有计划增加写作能力吗?
    • 我愿意,但它的工作时间问题。它是一个业余时间项目,所以不能真正把任何时间尺度放在它上面。目前这不是一个高优先级。
    猜你喜欢
    • 2011-09-29
    • 2014-10-07
    • 2013-11-14
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    相关资源
    最近更新 更多