冲突版本警告(JavaFX、JDK、JRE)
Conflicting Versions Warning (JavaFX,JDK,JRE)
我实际上正在尝试遵循 JavaFX 教程,当我得到我的主应用程序 运行 进行预览时,它在控制台上向我显示了这个警告:
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 或类似的东西,这是我在 topic 上找到的这段代码的输出:
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 的输出 - 版本命令:
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"(两者大小相同)所以这可能是两个版本冲突?我应该怎么做才能解决这个问题?
"alternative" 命令对我不起作用,它向我显示此错误:
No command 'alternatives' found, did you mean:
Command 'galternatives' from package 'galternatives' (universe)
alternatives: command not found
我下载了 galternative 应用程序,但是当我 运行 它时,我没有找到任何 "java" 相关替代方案的多个选择...
编辑:
经过一番搜索后,我发现了这个命令 (sudo update-alternatives --config java) 并使用了它,这是它的输出:
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:
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,这两个通常来自 "different" 路径。 OpenJDK 通过分发包管理系统安装;并且不使用 JavaFx libraries/tooling.
为了克服这种潜在的问题,"easiest" 的方法是使用来自Oracle 的"original" JDK。这甚至可以 "tried" 而无需进行更改系统的完整安装:只需从 Oracle 下载 JDK 作为存档文件并在本地解压缩即可。
我实际上正在尝试遵循 JavaFX 教程,当我得到我的主应用程序 运行 进行预览时,它在控制台上向我显示了这个警告:
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 或类似的东西,这是我在 topic 上找到的这段代码的输出:
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 的输出 - 版本命令:
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"(两者大小相同)所以这可能是两个版本冲突?我应该怎么做才能解决这个问题?
"alternative" 命令对我不起作用,它向我显示此错误:
No command 'alternatives' found, did you mean:
Command 'galternatives' from package 'galternatives' (universe)
alternatives: command not found
我下载了 galternative 应用程序,但是当我 运行 它时,我没有找到任何 "java" 相关替代方案的多个选择...
编辑: 经过一番搜索后,我发现了这个命令 (sudo update-alternatives --config java) 并使用了它,这是它的输出:
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:
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,这两个通常来自 "different" 路径。 OpenJDK 通过分发包管理系统安装;并且不使用 JavaFx libraries/tooling.
为了克服这种潜在的问题,"easiest" 的方法是使用来自Oracle 的"original" JDK。这甚至可以 "tried" 而无需进行更改系统的完整安装:只需从 Oracle 下载 JDK 作为存档文件并在本地解压缩即可。