在sbt中添加JavaFX(JDK8)(使用play框架)

时间:2014-04-17 10:19:31

标签: sbt java-8 playframework-2.2 javafx-8

目标是让一个独立的Play Framework(2.2)应用程序打开一个包含一些javafx(javafx-8)元素的附加状态窗口。

由于JavaFX类现在在我的类中使用javafx。*的Oracle Java 8实现的默认运行时类路径上,并且使用sbt进行编译应该没问题。

然而,sbt无法找到这些类并退出

play.api.UnexpectedException: Unexpected exception[NoClassDefFoundError: javafx/application/Application]

执行时

..\path-to-play-framework-2.2\play project run

解决此问题的最佳方法似乎是修改项目目录中的build.sbt。如何添加缺失(类)路径?

2 个答案:

答案 0 :(得分:2)

可悲的是,JavaFX并没有轻易地将其与sbt构建链接起来。您需要设置JAVA_HOME环境变量并对构建文件进行修改。

Here我有一个存储库,可以设置它。如果您使用sbt构建而不是scala构建,那么重要的一点是:

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

fork in run := true

原因是jfxrt.jar是包含JavaFX运行时的存档,默认情况下它不包含在sbt项目的类路径中。

答案 1 :(得分:0)

另一种方法是设置sbt的类路径。这可以在无法解析JavaFX的计算机上完成。

SBT_OPTS="-Xbootclasspath/p:/usr/share/java/openjfx/jre/lib/ext/jfxrt.jar"