hdf5在maven项目中

Gel*_*ant 8 java netbeans hdf5 maven

我正在尝试将hdf.hdf5lib.H5导入到NetBeans中的maven项目中.它有这个作为进口线

import hdf.hdf5lib.H5;
Run Code Online (Sandbox Code Playgroud)

如下所示:https://support.hdfgroup.org/products/java/JNI3/jhi5/index.html

但是,它抛出了这个异常:

java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: Uncompilable source code - package hdf.hdf5lib does not exist
Run Code Online (Sandbox Code Playgroud)

NetBeans已经通过在输入行说"packadge不会激动"来警告我.所以我让它"在Maven存储库中搜索依赖项".它找到了一些东西,并将其添加到我的pom.xml中:

<dependency>
    <groupId>org.hdfgroup</groupId>
    <artifactId>hdf-java</artifactId>
    <version>2.6.1</version>
    <type>jar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)

不幸的是,它在导入行保持警告"packadge不会激活"和错误异常.看来这个对pom.xml的补充什么也没做.

我是所有这些的初学者,所以也许解决方案很明显,但我找不到它.这些问题可以追溯到2012年至2014年,但对我没有帮助:

http://hdf-forum.184993.n3.nabble.com/maven-repository-for-java-release-td4026938.html

http://hdf-forum.184993.n3.nabble.com/HDF-Java-on-Maven-td4025772.html

将hdf5 libs(java&c ++)添加到公共maven存储库?

如何在NetBeans的Windows Java项目中使用HDF5

hdf5 Java库入门

正如ddarellis所建议的那样,这可能是一个版本问题.似乎有两种选择.

  • HDF Java 3.3.2和HDF5-1.8.19(HDFView版本2.14)
  • Java HDF对象包3.0.0和HDF5-1.10

我会尝试两者,但maven建议使用HDF Java 2.6.1是错误的.

这篇文章有助于将jarhdf5-3.3.2.jar添加到依赖项中.

https://forums.netbeans.org/post-62903.html#62903

  1. 在Maven项目中打开"添加依赖项"对话框
  2. 组成一些groupId,artifactId和版本并填充它们,好的.
  3. 依赖关系将添加到pom.xml中,并将显示在maven项目的"Libraries"节点下
  4. 右键单击Lib节点并"手动安装工件",填充jar的路径Jar应该安装到本地Maven仓库,并在步骤2中输入坐标).

好的,所以我安装了HDF5 1.8.19 HDFView2.14并将jarhdf5-3.3.2添加到依赖项中.但是,当我尝试运行时,我收到此错误:

Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at hdf.hdf5lib.H5.<clinit>(H5.java:230)
Run Code Online (Sandbox Code Playgroud)

dda*_*lis 6

在您发布的链接中,您可以在顶部看到:

非常重要的变化:JHI5的3.0版(及以上版本)将所有HDF库调用打包为"hdf.hd5flib",请注意"ncsa"已被删除.应更改使用早期版本的JHI5的源代码以反映此新实现.

这意味着如果您使用v3.0中较低的库版本(ncsav2.6.1 ),则必须在包名前面包含.hdf.hdf5lib.H5.

你可以在这里找到教程.


Bor*_*ris 6

您引用的链接包含过时的示例,您应该使用这些示例.

正如ddarellis指出的那样,正确的包装是:

ncsa.hdf.hdf5lib
Run Code Online (Sandbox Code Playgroud)

以下是打开HDF5文件的工作示例:

import ncsa.hdf.hdf5lib.H5;
import ncsa.hdf.hdf5lib.HDF5Constants;
import ncsa.hdf.hdf5lib.exceptions.HDF5Exception;

public class Foo {

  public void openHdf5File() {
    int flags = HDF5Constants.H5P_DEFAULT;
    int access = HDF5Constants.H5F_ACC_RDWR;

    try {
      int file_id = H5.H5Fopen("myFile.hdf", flags, access);
    } catch (HDF5Exception ex) {
      System.err.println("Failed to open HDF5 file");
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

您拥有的maven依赖是正确的,并且是maven central上的最新版本.