Java hdf5 库安装

Posted

技术标签:

【中文标题】Java hdf5 库安装【英文标题】:Java hdf5 library install 【发布时间】:2016-07-22 23:25:38 【问题描述】:

注意:这是我的第一个堆栈溢出问题,如果很糟糕,请原谅我。

对于一个学校项目,我一直在尝试访问百万歌曲数据集。我在 C++ 和 Java 中安装时遇到了多个问题,似乎都不起作用。使用 Java 版本,我只是在他们的网站上找到了所需的 jar 文件并将它们从外部导入。 Eclipse 似乎没有问题,直到我打开文件(我还链接了 hdf5.dll),我收到了这个错误:

线程“主”java.lang.NoClassDefFoundError 中的异常:无法初始化类 ncsa.hdf.hdf5lib.HDF5Constants 在 ncsa.hdf.object.h5.H5File.(H5File.java:98) 在 ncsa.hdf.object.h5.H5File.(H5File.java:143) 在 hdf5_getters.hdf5_open_readonly(hdf5_getters.java:52) 在 hdf5_getters.main(hdf5_getters.java:564) 在 Main.main(Main.java:7)

我真的认为这只是我没有正确安装 Java-hdf 库,但是我不确定如何正确安装它们。我阅读了使用 CMake 编译一些二进制文件的内容,但是在编译 CMake 时抛出了一些未知错误,所以我完全陷入困境。请帮助正确安装,如果需要,我可以提供更多信息。

这是检索存储在数据库中的歌曲字段所需的 getter 的来源:https://github.com/tbertinmahieux/MSongsDB

这是我尝试遵循的说明,然后最终找到并下载了适当的 .jar 文件,并在 eclipse 中作为外部 jar 导入: https://www.hdfgroup.org/products/java/release/downloadsrc.html#src

【问题讨论】:

这里是百万歌曲数据集:labrosa.ee.columbia.edu/millionsong 请包含完整的堆栈跟踪。应该有一个“原因”来解释问题的真正原因。如果它不在此堆栈跟踪中,它将在较早的堆栈跟踪中。 这是完整的堆栈跟踪,因此很难弄清楚。 那么日志文件中一定有更早的异常,或者某处。 “无法初始化类”消息意味着先前尝试初始化失败的类。这将导致异常......并且该异常的堆栈跟踪/消息将为初始化失败的位置/原因提供一些线索。 感谢您的帮助,我预计异常发生在库类文件的某些部分并且没有显示出来。无论如何,我最终通过(最终)找到了具有适当匹配 .dll 的 2010 年的旧版本 hdf5 库来解决问题。花了一整天的时间试图从 C++ 到 Java 再到 Python 访问这个数据集.... 【参考方案1】:

这是使用该人的实现访问此数据集的任何相关问题的解决方案。不幸的是,它是在 2010/2011 年编码的,他的实现只适用于那个时候的 java-hdf。我花了很长时间才弄清楚这一点并找到旧库以及匹配的 .dll。希望这可以节省一两天的时间....

罐子: http://www.java2s.com/Code/Jar/h/Downloadhdfjava261jar.htm

动态链接库: ftp://ftp.hdfgroup.org/HDF5/releases/HDF-JAVA/HDF-JAVA-2.8/bin/win64/hdf-java/lib/win/jhdf5.dll

此外,您必须通过(在 Eclipse 中)转到运行->运行配置->参数来链接 dll,然后在 VM 框中键入:-Dncsa.hdf.hdf5lib.H5.hdf5lib="PATH_TO_DLL" 其中“PATH_TO_DLL”被替换为 dll 的完整路径。 即对我来说:-Dncsa.hdf.hdf5lib.H5.hdf5lib=C:\Users\pete\Desktop\HDF5\jhdf5.dll

无论您不尝试遵循他们网站上的 java hdf5 安装说明,它都不适用于此实现,您将浪费很多时间。如果没有大量过时的库,那么任何 C++ getter 实现或 Python 实现都不会,这些库不仅难以找到,而且无法与日期戳匹配。 (所有这些仅适用于 tbertin 编写的百万歌曲数据库 getter 的实现)

【讨论】:

【参考方案2】:

对于 MAC 用户,将 libjhdf5.jnilib 复制到 /Library/Java/Extensions 即可解决问题。

您应该找到库 here。

参考是here。

【讨论】:

以上是关于Java hdf5 库安装的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 安装 HDF5 C++库

无法从自制软件安装 hdf5 库

在 Windows 上使用带有 CMake 的 HDF5 库(错误:“找不到 HDF5”)

链接静态 HDF5 Fortran 库

编译另一个库时出现 HDF5 错误

HDF5:构建 Fortran 库 (Windows)