Ubuntu 上的 JAVAFX_HOME 路径

Ubuntu 上的 JAVAFX_HOME 路径

所以我的问题是 openjfx 并在 Scala-sbt 项目上使用它。实际问题是 JAVAFX_HOME 路径。

首先,我的计算机上安装了 Java 版本 10.0.2,而 openjfx (我将其视为 JavaFX) 位于基于 Java 8jre (需要 openjdk-8-jre) 的 ubuntu 存储库中。因此,当我安装时,它需要另一个版本的 Java。

但是在安装 openjfx 之后我的性功能障碍构建不会打开项目并给出错误

java.lang.ExceptionInInitializerError

...

原因:java.util.NoSuchElementException:未找到键:JAVAFX_HOME

我认为这是因为 Java 当前版本是 10,而 JavaFX 是 8。然而,当我尝试这样做时

 update-alternatives --config java

并选择版本 8,java 似乎根本无法工作。java --version 的输出显示:

无法识别的选项:--version

错误:无法创建 Java 虚拟机。

错误:发生致命异常。程序将退出。

那么,有没有办法将 javafx 仅导出到 .bashrc,类似于:

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

让 JAVAFX_HOME 路径正常工作还是我必须以某种方式将 java 重新安装到 java 8 才能让 javafx 正常工作?

答案1

好的,所以 sbt 出现错误,因为构建文件引用了系统环境 [java 中的 system.getenv("JAVA_HOME")),而在 sbt 中它是 scala.sys.env("JAVA_HOME") 并且类似于 JAVAFX_HOME]

通常使用 JAVA_HOME 系统变量,因此在 Linux 中,通过将 Java 安装位置添加到 /etc/environment 文件来添加此变量。我的是 JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"。请记住不要在环境文件中使用 CLASSPATH,因为它会妨碍 Java 文件的运行。

/etc/环境:

...
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
JAVAFX_HOME="/usr/share/java/openjfx"  

请记住在设置新的环境变量后重新启动。

还要注意,应该对 java 和 javac 都执行 update-alternatives。并且

java --version 

不起作用,因为在 Java 8 中它只是

java -version

你也可以在 sbt 中使用这一行来添加

 unmanagedJars in Compile += Attributed.blank(
   file(System.getenv("JAVA_HOME") + "/jre/lib/jfxrt.jar"))

设置当前 jfxrt (javaFX) 文件,无论它在哪里(进行相应修改)

相关内容