java JAR 文件适用于 Windows,但不适用于 Linux (centos-7.6)

java JAR 文件适用于 Windows,但不适用于 Linux (centos-7.6)

我有一个STIGViewer-2.8.jar文件。这在 Microsoft Windows 7 或 10 中工作正常,但在 Centos-7.6 linux 中不起作用。在linux中,当java STIGViewer-2.8.jar我做的时候

Error.  Could not find or load main class StigViewer-2.8.jar

我已经jdk-8u191-linux-x64.rpm安装了,这是Centos带图形用户界面的服务器所以我处于具有完整图形的运行级别 5,其他一切都正常... Libreoffice、freecad、unameit。我需要做一些技巧才能让 jar 文件在 Linux 中运行吗?或者是java的问题以及jar文件的问题仅限 Windows

答案1

使用软件 GUI 激活 EPEL 存储库 I已删除一切开放Java或者OpenJDK东西;进行了搜索爪哇并通过良好的判断力不受控制。有些事情就像json-glib或者python-java包或者tzdata-java我独自离开了。

然后我做了一个yum install jdk-8u191-linux-x64.rpm来自甲骨文的。

这在软件 GUI 中显示为jdk1.8-2000:1.8.0.201-fcs没有打开措辞,以及所有开放Java或者OpenJDK东西没有安装。

之后它作品仅使用java -jar StigViewer.jar

如果我这样做java StigViewer.jar我仍然收到错误消息,如果我从 Windows 资源管理器中双击 .jar 文件,它会像容器一样打开该文件。

安装centos 7.6时;我选择了带图形用户界面的服务器我认为java的东西有一个选择,但如果有的话我知道我没有选择,所以看起来centos在某种程度上自动安装了openjava。

更新:

甲骨文jdk-8u201-linux-x64.rpm 结果为/usr/bin/java 关联然后/etc/alternatives/java指向/usr/java/jdk1.8.0_201-amd64/jre/bin/java

这是 oracle java 可以使用的stigviewer.jar文件仅由java -jar stigviewer.jar

其他软件如八度绘图依靠OpenJDK 无头运行时环境 8which isjava-1.8.0-openjdk-headless-1:1.8.0.201和 that 导致/usr/bin/java仍然链接到/etc/alternatives/java和 that 链接到/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64/jre/bin/javathis 没有工作stigviewer.jar文件。

/usr/java/jdk1.8.0_201-amd64/jre/bin/java所以我可以记得在需要时手动运行 Oracle 。似乎一旦安装了 OpenJDK,oracle rpm 就不会覆盖链接。

答案2

我想补充一点,Red Hat 已记录了 RHEL 7 的此问题:DISA STIG 查看器无法与 OpenJDK 一起运行。此链接需要 Red Hat 登录才能工作,因此我将在此处重现关键信息。

环境:红帽企业 Linux 7 (RHEL7)、OpenJDK 1.8

问题:DISA STIGViewer 无法与 OpenJDK 一起运行:

$ java -jar ./STIGViewer-2.7.1.jar
Error: Could not find or load main class stigviewer.STIGViewer

解决方案:对该应用程序使用 Oracle 的 JRE 而不是 OpenJDK。 Oracle 的 JRE 或 JDK 必须从 Oracle 网站下载。

根本原因:无法使用 OpenJDK,因为 DISA STIGViewer 应用程序内部使用 OpenJDK 不提供的 JavaFX。

请注意,RHEL 7/CentOS 7 上的默认 Java 8 二进制文件来自该java-1.8.0-openjdk包。

STIG 查看器 2.x 用户指南在第 1.1 节注释中也提到了这一点:

该工具是用 Java 生成的,并作为单个 JAR 文件提供。它需要在用户计算机上安装Java运行时环境(JRE)才能运行(即,要运行 STIG Viewer 工具,需要 Oracle Java)。这使得程序可以在为其生成 JRE 的任何操作系统上运行。这也限制了程序以当前登录用户的权限级别运行。

相关内容