hdf5在maven项目中

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

import hdf.hdf5lib.H5; 

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

但是,它抛出了这个exception:

 java.lang.ExceptionInInitializerError Caused by: java.lang.RuntimeException: Uncompilable source code - package hdf.hdf5lib does not exist 

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

  org.hdfgroup hdf-java 2.6.1 jar  

不幸的是,它会在导入行保持警告“packadge不会激活”和错误exception。 似乎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.(H5.java:230) 

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

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

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

你可以在这里找到教程。

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

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

 ncsa.hdf.hdf5lib 

以下是打开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"); } } } 

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