Gradle无法找到JavaFX类

时间:2013-10-23 21:34:59

标签: 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

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

compile files( "/usr/lib/jvm/java-7-oracle/jre/lib/jfxrt.jar" )

有没有更好的方法将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!

感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

使用JavaFX Gradle Plugin

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

有关JavaFX类路径解析(不与Gradle相关)的更多信息,请参阅: Compile code using JavaFX 2.0 (using command line)

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

顺便说一句,build system for the entire JavaFX system is based on Gradle,所以JavaFX和Gradle之间肯定没有不兼容。