Gradle无法找到JavaFX类

Ren*_*ato 6 groovy javafx gradle

我在Linux Mint机器上安装了最新版本的Java(HotSpot VM 1.7.0_45)并使用Gradle 1.8.我也安装了Groovy,版本1.8.6,但我认为这并不重要,因为Gradle有自己的groovy-all.jar.

我的问题是我无法使用gradle编译我的Groovy项目,因为JavaFX类似乎不在类路径中.错误是这样的:

unable to resolve class javafx.scene.Node
 @ line 3, column 1.
   import javafx.scene.Node
Run Code Online (Sandbox Code Playgroud)

我最后通过在我的依赖项中添加以下可怕的硬编码路径来解决这个问题:

compile files( "/usr/lib/jvm/java-7-oracle/jre/lib/jfxrt.jar" )
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法将JavaFX添加到Gradle的编译类路径中,以便所有项目都可以看到它,而不必将其添加到每个项目中?

我已经尝试了我能想到的一切:

  • 将jfxrt.jar添加到标准JRE(我确认gradle使用我的标准java运行)ext文件夹,这样我现在可以用javac编译java类并运行它们java(我知道在这个版本的Java中JavaFX jar应该已经在JDK的类路径中了,但在执行此操作之前,我仍然无法运行,而不是编译我的Java应用程序.
  • 还在groovy类路径中添加了一个到同一个jar的软链接,这样我就可以从groovy shell中执行如下所示的操作并且它可以工作:

    将javafx.application.Application导入为A; println A.

这也适用于Groovy控制台.

它只适用于Gradle!

谢谢你的帮助.

jew*_*sea 7

使用JavaFX Gradle插件.

JavaFX Gradle插件应该能够找出JavaFX运行时所在的位置,而无需执行手动,特定于环境的配置.

有关JavaFX类路径解析(不与Gradle相关)的更多信息,请参阅: 使用JavaFX 2.0编译代码(使用命令行).

另请注意,如果您使用的是Oracle Java 8或更高版本,JavaFX类现在位于Oracle Java实现的缺省运行时类路径中.

顺便说一句,整个JavaFX系统构建系统基于Gradle,因此JavaFX和Gradle之间肯定没有不兼容性.