所以我的问题是 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) 文件,无论它在哪里(进行相应修改)