【问题标题】:Conflicting Versions Warning (JavaFX,JDK,JRE)版本冲突警告(JavaFX、JDK、JRE)
【发布时间】:2017-07-15 06:25:16
【问题描述】:

我实际上是在尝试学习 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 -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 并找到了 2 个文件夹“java-1.8.0-openjdk-amd64”和“java-8-openjdk-amd64”(两者大小相同)所以也许这两个版本冲突?我应该怎么做才能解决这个问题?

“替代”命令对我不起作用,它向我显示此错误:

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

我下载了替代应用程序,但是当我运行它时,我在任何与“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)

【问题讨论】:

  • 您的发行版可能没有更新openjfx 包,或者您可能没有安装最新版本。如果您使用的是最新的 openjfx 包,最简单的解决方案是切换到完整的 Oracle 的 JRE(即 - JavaFX 不单独打包)
  • 好吧,我会从这个链接 (oracle.com/technetwork/java/javase/downloads/…) 下载它,但是我如何在安装新的之前卸载我正在使用的那个,这样我就不会遇到版本冲突的问题?
  • 没关系,我只需要转到 eclipse.ini 并在 -vm 行 (/usr/lib/jvm/java-8-oracle/jre) 下设置我的新 java 安装的正确路径/bin) 并且它有效,我尝试运行我的 JavaFx 应用程序,但我没有收到该错误,我将更新我的第一篇文章并将其标记为已解决,谢谢你的帮助 :)
  • 当然感谢您的帮助(抱歉,这是我在这个论坛上的第一篇文章,我还不熟悉投票系统)

标签: java javafx version


【解决方案1】:

最后,这里的这个问题是关于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 版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多