关于 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 FXML API 版本警告可能重复
- 您的发行版可能没有更新 openjfx 包,或者您可能没有安装最新版本。如果您使用的是最新的 openjfx 包,最简单的解决方案是切换到完整的 Oracle 的 JRE(即 - JavaFX 未单独打包)
- 好吧,我将从这个链接(oracle.com/technetwork/java/javase/downloads/…)下载它,但是我如何在安装新的之前卸载我现在正在使用的那个,这样我就不会有冲突的版本问题?
- 没关系,我只需要转到 eclipse.ini 并在 -vm 行(/usr/lib/jvm/java-8-oracle/jre/bin)下设置我的新 java 安装的正确路径,它就可以工作,我尝试运行我的 JavaFx 应用程序,但我没有收到该错误,我将更新我的第一篇文章并将其标记为已解决,谢谢您的帮助 🙂
- 当然感谢您的帮助(对不起,这是我在这个论坛上的第一篇文章,我还不熟悉投票系统)
- 没问题。只是为了记录:现在你投票了(太棒了)。但是为了"解决",您还需要单击我的答案的投票错误旁边的"复选标记"图标;-) ...还有另一件事:您可能想要查看您的评论;并决定删除其中的哪些——为了让问题对未来的用户有帮助,实际上最好去掉那些太多的边讨论评论。
- 现在你明白了;-) 非常感谢!
- 别客气 ! 🙂 好吧,我会清理一些评论,因为我已经发布了我为解决第一篇文章中的问题所做的所有事情。
最后,这里的这个问题是关于JavaFx运行时文件和本地系统上安装的JRE/JDK不匹配的问题。
尤其是在 Linux 中,这两个通常通过"不同"路径出现。 OpenJDK 通过分发包管理系统安装;并且不使用 JavaFx 库/工具。
为了克服这些潜在的问题,"最简单"的方法是使用 Oracle 的"原始"JDK。这甚至可以"尝试",而无需进行更改系统的完整安装:只需从 Oracle 下载 JDK 作为存档并在本地解压缩即可。
相关讨论
- 最后,你有更多"如何安装/使用我的 ubuntu"的问题。我建议您在 askubuntu.com 上提出一个问题(例如"我如何确定我正在使用哪个 Java"或类似的东西。但问题是:如果您没有安装替代品,那么您很可能拥有/usr/bin 中的链接直接转到真正的二进制文件的位置。除此之外 - 它是您的系统;您不应该知道何时/如何安装您的 java 版本吗?(java 需要安装在 ubuntu 上,它不是初始安装的一部分我认为)
- 编辑:我找到了这个命令"sudo update-alternatives --config java",这是它的输出:链接组java中只有一种选择(提供/usr/bin/java):/usr/lib/ jvm/java-8-openjdk-amd64/jre/bin/java 没什么可配置的。所以我的系统上实际上没有安装替代的java版本