所以我的问题是 openjfx 并在 Scala-sbt 项目中使用它。实际问题是 JAVAFX_HOME 路径。
首先,我在我的计算机上安装了 java 版本 10.0.2,并且 openjfx(我将其作为 JavaFX)位于基于 java 8jre 的 ubuntu 存储库中(需要 openjdk-8-jre)。所以当我安装它时需要另一个版本的java。
但是在安装openjfx之后,我的 sbt build 仍然不会打开项目并给出错误
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 正常工作?
好的,所以 sbt 有错误,因为构建文件在 java 中引用了系统环境 [system.getenv("JAVA_HOME")),在 sbt 中它是 scala.sys.env("JAVA_HOME") 并且类似于 JAVAFX_HOME]
通常使用 JAVA_HOME 系统变量,因此通过将 java 安装位置添加到 /etc/environment 文件来在 linux 中添加它。我的是 JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"。请记住不要在环境文件中使用 CLASSPATH,因为它会阻碍 java 文件的运行。
/etc/环境:
请记住在设置新的环境变量后重新启动。
另请注意,应该对 java 和 javac 进行更新替代。和
不起作用,因为在 java 8 中它只是
同样在 sbt 你可以使用这一行来添加
在任何地方设置当前的 jfxrt (javaFX) 文件(相应地修改)