groovy - Gradle 找不到 JavaFX 类

标签 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 应该已经在 J​​DK 的类路径中,但在执行此操作之前,我仍然无法运行我的 Java 应用程序,而不是编译)。
  • 还在 groovy 类路径中添加了指向同一个 jar 的软链接(soft link),这样我就可以从 groovy shell 执行如下所示的操作,并且它可以工作:

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

  • 这也适用于 Groovy 控制台。

    它只是在 Gradle 中不起作用!

    谢谢你的帮助。

    最佳答案

    使用 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之间绝对没有不兼容的地方。

    关于groovy - Gradle 找不到 JavaFX 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19552740/

    相关文章:

    JavaFX 应用程序图标

    gradle - sonarqube-gradle-plugin:为两个级别的子项目派生了错误的基本目录

    Groovy:如何获取 ?private? 的值闭包变量

    groovy - 如何加入groovy中的 map 列表

    groovy - 安装 Groovy

    3d - javafx 3d 向 fxml 导出/导入不正确或不完整

    java - 按下字符时获取鼠标位置

    android - 预期 org.gradle.api.artifacts.result.ResolvedDependencyResult 但找到 org.gradle.api.internal.artifacts.result.DefaultUnresolvedDependencyResult

    xcode - 无法在XCode中使用Cocoapods存档Kotlin Native