版本冲突警告(JavaFX,JDK,JRE)

4

我实际上正在尝试遵循一个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或类似的东西,下面是从我在这个主题上找到的代码输出:

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

输出:
Java 版本:1.8.0_121
JavaFX 版本:8.0.60

java -version 命令的输出:

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,并发现了两个文件夹“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)进行安装。


好的,我会从这个链接(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)下载它,但在安装新版本之前,我该如何卸载当前正在使用的版本,以避免版本冲突问题? - user7616817
当然我很感激你的帮助(抱歉,这是我在这个论坛上的第一篇帖子,我还不熟悉投票系统) - user7616817
没问题。只是为了记录:现在你点了赞(太棒了)。但是为了“解决”,你还想点击我的答案投票错误旁边的“勾选”图标;-) …… 另外一件事是:你可能想要查看你的评论;并决定删除哪些-为了让问题对未来用户有帮助,去掉那些太多的侧面讨论评论是更好的。 - GhostCat
现在你明白了;-)非常感谢! - GhostCat
不客气! :) 好的,我会清理一些注释,因为我已经在第一篇帖子中发布了我所做的一切来解决问题。 - user7616817
显示剩余3条评论
1个回答

1
最终,这个问题涉及到JavaFx运行时文件与本地系统上安装的JRE/JDK不匹配的问题。
特别是在Linux中,这两者通常通过“不同”的路径来获取。OpenJDK是通过发行版软件包管理系统安装的,无法使用JavaFx库/工具。
为了克服这种潜在的问题,“最简单”的方法是使用Oracle的“原始”JDK。甚至可以在不进行完整安装以改变系统的情况下“尝试”它:只需从Oracle下载JDK的存档并在本地提取即可。

最后,你更多的是一个“如何安装/使用我的Ubuntu”的问题。我建议你在askubuntu.com上提出一个问题(比如“我如何确定我正在使用哪个Java”或类似的问题)。但问题是:如果你没有安装备选方案,那么很有可能你在/usr/bin中有直接指向真正二进制文件所在位置的链接。而且更重要的是——这是你的系统;你不应该知道你是何时/如何安装你的Java版本吗?(Java需要在Ubuntu上安装,它不是初始安装的一部分) - GhostCat
编辑:我找到了这个命令“sudo update-alternatives --config java”,以下是它的输出: 在链接组java中只有一个可选项(提供/usr/bin/java):/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 没有需要配置的内容。 因此,实际上在我的系统上没有安装其他Java版本。 - user7616817

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接