关于 java:冲突版本警告 (JavaFX,JDK,JRE)

Conflicting Versions Warning (JavaFX,JDK,JRE)

我实际上是在尝试学习 JavaFX 教程,当我运行主应用程序以进行预览时,它会在控制台上显示此警告:

1
2
3
4
Feb 24, 2017 12:55:20 PM javafx.fxml.FXMLLoader$ValueElement processValue
WARNING: Loading FXML document with JavaFX API of version 8.0.111 by JavaFX runtime of version 8.0.60
Feb 24, 2017 12:55:20 PM javafx.fxml.FXMLLoader$ValueElement processValue
WARNING: Loading FXML document with JavaFX API of version 8.0.111 by JavaFX runtime of version 8.0.60

我搜索了一下,似乎我有不同版本的 JDK/JRE 或类似的东西,这是我在这个主题上找到的这段代码的输出:

1
2
System.out.println("java version:"+System.getProperty("java.version"));
System.out.println("javafx.version:" + System.getProperty("javafx.version"));

输出:
java版本:1.8.0_121
javafx.version: 8.0.60

来自 java -version 命令的输出:

1
2
3
openjdk version"1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)

我去了这个位置:/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
并找到 2 个文件夹 "java-1.8.0-openjdk-amd64" 和 "java-8-openjdk-amd64" (都具有相同的大小)所以也许这些是 2 个版本冲突?我应该怎么做才能解决这个问题?

"alternative" 命令对我不起作用,它向我显示此错误:

1
2
3
No command 'alternatives' found, did you mean:
Command 'galternatives' from package 'galternatives' (universe)
alternatives: command not found

我下载了替代应用程序,但是当我运行它时,我在任何与"java"相关的替代方案中都找不到多个选择...

编辑:
经过一番搜索后,我发现了这个命令(sudo update-alternatives --config java)并使用了它,这是它的输出:

1
2
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Nothing to configure.

所以我想可以安全地假设这不是 java 替代安装的问题...

解决方案 :
我实际上是通过卸载 openjdk-8 并安装 oracle Java-8 来实现的
1) 使用以下命令在基于 ubuntu 的发行版上卸载 openjdk-8:sudo apt-get purge openjdk-8-*(这里有一个更通用的卸载 Java 的教程 http://www.2daygeek.com/remove-uninstall-oracle-java-openjdk- on-ubuntu-centos-debian-fedora-mint-rhel-opensuse/)

2) 使用此命令安装 Oracle Java-8:

1
sudo apt-get install oracle-java8-set-default

或遵循本教程 (http://www.webupd8.org/2014/03/how-to-install-oracle-java-8-in-debian.html)


最后,这里的这个问题是关于JavaFx运行时文件和本地系统上安装的JRE/JDK不匹配的问题。

尤其是在 Linux 中,这两个通常通过"不同"路径出现。 OpenJDK 通过分发包管理系统安装;并且不使用 JavaFx 库/工具。

为了克服这些潜在的问题,"最简单"的方法是使用 Oracle 的"原始"JDK。这甚至可以"尝试",而无需进行更改系统的完整安装:只需从 Oracle 下载 JDK 作为存档并在本地解压缩即可。