Maven项目中的hdf5
Posted
技术标签:
【中文标题】Maven项目中的hdf5【英文标题】:hdf5 in maven project 【发布时间】:2018-05-25 00:02:39 【问题描述】:我正在尝试将 hdf.hdf5lib.H5 导入到我在 NetBeans 中的 maven 项目中。它有这个作为导入线
import hdf.hdf5lib.H5;
这里建议: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
NetBeans 已经通过在导入行中说“packadge 不存在”来警告我。所以我让它“在 Maven 存储库中搜索依赖项”。它确实找到了一些东西并将其添加到我的 pom.xml:
<dependency>
<groupId>org.hdfgroup</groupId>
<artifactId>hdf-java</artifactId>
<version>2.6.1</version>
<type>jar</type>
</dependency>
不幸的是,它在导入行“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
add hdf5 libs (java & c++) to public maven repository?
How to use HDF5 in Windows Java project with NetBeans
Getting Started with hdf5 Java library
正如 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和version填一下,OK。
依赖项将添加到 pom.xml 中,并显示在 maven 项目的“库”节点下
右键单击 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)
【问题讨论】:
右键项目并选择“清理并构建” 【参考方案1】:您提到的link 包含过时的示例,您应该改用these examples。
正如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 上的最新版本。
【讨论】:
3.2.2 只能在他们使用此导入 hdf.hd5flib 的网站上下载,但我认为他有点困惑...... 是的,我是。从 2010 年开始,maven 上有 3.3.2 版和 2.6.1 版。感谢您的帮助,Boris 和 @ddarellis。【参考方案2】:在您发布的link,您可以在顶部看到:
非常重要的变化: JHI5 软件包的 3.0 版(及更高版本) 所有 HDF 库调用为“hdf.hd5flib”,请注意“ncsa”已 删除。使用 JHI5 早期版本的源代码应该 进行更改以反映此新实现。
这意味着如果您使用 v3.0(v2.6.1)的较低库版本,则必须在包名称前包含 ncsa
.hdf.hdf5lib.H5。
你可以找到教程here。
【讨论】:
我不使用 v2.6.1 ,这只是maven知道的版本。我下载了最新版本的 HDFView。 (v3.0) 使用 HDF5 v1.10 添加 jarhdf5-3.3.2.jar 导入很好: import hdf.hdf5lib.H5;您是否将此库添加到构建路径?还要考虑从 pom 文件中删除依赖关系。以上是关于Maven项目中的hdf5的主要内容,如果未能解决你的问题,请参考以下文章
已经搭建好java项目,如何直接将maven本地仓库中的所有jar通过pom直接引入
请问,maven项目发布为jar到私服,其他项目如何引用内部依赖?