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
- 在Maven项目中打开“添加依赖项”对话框
- 组成一些groupId,artifactId和版本并填充它们,好的。
- 依赖关系将添加到pom.xml中,并将显示在maven项目的“Libraries”节点下
- 右键单击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上的最新版本。