如何为 Windows 10 的 HDF5view 应用程序安装 java

Posted

技术标签:

【中文标题】如何为 Windows 10 的 HDF5view 应用程序安装 java【英文标题】:how to install java for HDF5view app for Windows 10 【发布时间】:2021-04-29 14:36:59 【问题描述】:

我在运行 HDF5view 时收到以下错误,但找不到有关如何安装 Java 的说明,该错误似乎表明缺少该说明。

PS C:\Users\Doug\AppData\Local\HDF_Group\HDFView> .\HDFView.exe
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:///C:/Users/Doug/AppData/Local/HDF_Group/HDFView/app/mods/slf4j-nop-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Doug/AppData/Local/HDF_Group/HDFView/app/extra/slf4j-simple-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Doug/AppData/Local/HDF_Group/HDFView/app/slf4j-nop-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.helpers.NOPLoggerFactory]
java.lang.UnsatisfiedLinkError: C:\Users\Doug\AppData\Local\HDF_Group\HDFView\runtime\bin\hdf5_java.dll: Can't find dependent libraries
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:383)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:227)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:169)
        at java.base/jdk.internal.loader.NativeLibraries.findFromPaths(NativeLibraries.java:310)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:280)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2440)
        at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:809)
        at java.base/java.lang.System.loadLibrary(System.java:1893)
        at jarhdf5@1.10.7/hdf.hdf5lib.H5.loadH5Lib(H5.java:315)
        at jarhdf5@1.10.7/hdf.hdf5lib.H5.<clinit>(H5.java:255)
        at jarhdf5@1.10.7/hdf.hdf5lib.HDF5Constants.<clinit>(HDF5Constants.java:29)
        at hdf.object.h5.H5File.<clinit>(H5File.java:115)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:377)
        at hdf.object.FileFormat.<clinit>(FileFormat.java:227)
        at hdf.view.HDFView.createToolbar(HDFView.java:1036)
        at hdf.view.HDFView.createMainWindow(HDFView.java:448)
        at hdf.view.HDFView.openMainWindow(HDFView.java:280)
        at hdf.view.HDFView$39.run(HDFView.java:2571)
        at swt/org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236)
        at swt/org.eclipse.swt.widgets.Display.syncExec(Display.java:4735)
        at hdf.view.HDFView.main(HDFView.java:2563)
Exception in thread "main" java.lang.UnsatisfiedLinkError: 'int hdf.hdf5lib.H5.H5dont_atexit()'
        at jarhdf5@1.10.7/hdf.hdf5lib.H5.H5dont_atexit(Native Method)
        at jarhdf5@1.10.7/hdf.hdf5lib.H5.loadH5Lib(H5.java:331)
        at jarhdf5@1.10.7/hdf.hdf5lib.H5.<clinit>(H5.java:255)
        at jarhdf5@1.10.7/hdf.hdf5lib.HDF5Constants.<clinit>(HDF5Constants.java:29)
        at hdf.object.h5.H5File.<clinit>(H5File.java:115)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:377)
        at hdf.object.FileFormat.<clinit>(FileFormat.java:227)
        at hdf.view.HDFView.createToolbar(HDFView.java:1036)
        at hdf.view.HDFView.createMainWindow(HDFView.java:448)
        at hdf.view.HDFView.openMainWindow(HDFView.java:280)
        at hdf.view.HDFView$39.run(HDFView.java:2571)
        at swt/org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236)
        at swt/org.eclipse.swt.widgets.Display.syncExec(Display.java:4735)
        at hdf.view.HDFView.main(HDFView.java:2563)
Failed to launch JVM
PS C:\Users\Doug\AppData\Local\HDF_Group\HDFView>

【问题讨论】:

我已经使用 HDFView 3 年多(2.x 和 3.X 版本),还没有安装 Java。 HDFView 安装程序可能已经安装了它,但我不必下载或安装任何特定于 Java 的东西。我建议您联系 HDF 小组并提出您的问题。 【参考方案1】:

刚刚遇到同样的问题。您需要将 runtime\bin 文件夹添加到您的 Windows 路径变量中。

从 HDF 集团网站下载“HDFView-3.1.2-win10_64-vs16.zip” 使用随附的“HDFView-3.1.2.exe”安装 HDF View 应用 打开 Windows 开始菜单并输入“编辑系统环境” 从用户变量或系统变量中选择“路径”变量,然后单击“编辑” 添加新条目并输入“C:\Users\[USERNAME]\AppData\Local\HDF_Group\HDFView\runtime\bin” 重新启动 Windows,现在您可以从 Windows 开始菜单打开“HDF 视图”

【讨论】:

【参考方案2】:

我有同样的问题。确保您安装了低于或高于 java 的版本

openjdk version "15.0.1" 2020-10-20
OpenJDK Runtime Environment (build 15.0.1+9-18)
OpenJDK 64-Bit Server VM (build 15.0.1+9-18, mixed mode)

如果这不起作用,请运行 HDFgroup 中的脚本来解决此问题。可以在https://support.hdfgroup.org/ftp/HDF5/releases/HDF-JAVA/hdfview-3.1.2/hdfview_scripts/找到脚本

该问题的官方解释可以在HDFgroup论坛https://forum.hdfgroup.org/t/hdfview-3-1-2-issues-and-regressions/7887/3找到

希望这会有所帮助;)

【讨论】:

【参考方案3】:

这是由于 3.1.2 版本的一个已知问题。它记录在HDFGroup support pages。他们提供了一个 bat 脚本,可以正确设置 JVM 变量。下面我粘贴代码。

@ECHO OFF

setlocal enabledelayedexpansion
pushd %~dp0

rem Adjust the following variable to match your environment
set INSTALLDIR=%cd%
set PATH=%INSTALLDIR%\app;%PATH%
set JAVABIN=%INSTALLDIR%\runtime\bin

rem start "HDFView" "%JAVABIN%\javaw.exe" %JAVAOPTS% -Xmx1024M -Djava.library.path="%INSTALLDIR%\app" -Dhdfview.root="%INSTALLDIR%\app" -jar "%INSTALLDIR%\app\HDFView.jar" %*

rem Default invocation when using modules
start "HDFView" "%JAVABIN%\javaw.exe" %JAVAOPTS% -Xmx1024M -Djava.library.path="%INSTALLDIR%\app;%INSTALLDIR%\app\ext" -Dhdfview.root="%INSTALLDIR%\app" -cp "%INSTALLDIR%\app\*" hdf.view.HDFView %*

exit /b 0

您可以download the original code 或将其复制到您已安装 HDFView 的同一文件夹中的 hdfview.bat 文件中,从命令行运行它,它应该可以工作。

还有一个Linux bash script 可用,因为它产生了相同的错误。

【讨论】:

【参考方案4】:

如果以上解决方案都不起作用,请将安装目录从C:\Users\xxxx\AppData更改为C:\ProgramFiles\HDFView(不存在则创建)并完成安装。成功安装应该会在安装目录中显示以下文件夹以及 .exe:

应用程序 运行时

【讨论】:

以上是关于如何为 Windows 10 的 HDF5view 应用程序安装 java的主要内容,如果未能解决你的问题,请参考以下文章

如何为 UAP(windows 10)截取媒体元素的当前帧

如何为 WINDOWS 10 安装 Qt Designer for PyQt5

Windows 10 IoT Serials 5 - 如何为树莓派应用程序添加语音识别与交互功能

如何为 Windows 编译 cymunk?

如何为 Windows 编译 lsqlite3?

如何为这个 C++ Windows 项目制作“make.bat”?