我正在使用 javafx-gradle-plugin,我的构建失败并显示 "Couldn't find Ant-JavaFX-library"。如何指定 JavaFX 位置?
I'm using javafx-gradle-plugin and my build fails with with "Couldn't find Ant-JavaFX-library". How do I specify the JavaFX location?
我确实安装了 openjfx(通过 dnf),我相信它正在寻找的 jar 是安装在以下路径的那个:
/usr/lib/jvm/openjfx/lib/ant-javafx.jar
显然我想避免像那样硬编码 jar 路径,但我什至还没有找到使用该路径的方法。这是 gradle 输出:
$ gradle tasks
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'testproj'.
> Couldn't find Ant-JavaFX-library, please make sure you've installed some JDK which includes JavaFX (e.g. OracleJDK or OpenJDK and OpenJFX), and JAVA_HOME is set properly.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/4.9/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 0s
和gradle --version
:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/home/travis/opt/gradle/4.9/lib/groovy-all-2.4.12.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
------------------------------------------------------------
Gradle 4.9
------------------------------------------------------------
Build time: 2018-07-16 08:14:03 UTC
Revision: efcf8c1cf533b03c70f394f270f46a174c738efc
Kotlin DSL: 0.18.4
Kotlin: 1.2.41
Groovy: 2.4.12
Ant: Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM: 10.0.2 ("Oracle Corporation" 10.0.2+13)
OS: Linux 4.18.9-200.fc28.x86_64 amd64
似乎没有一个好的答案,除了暂时坚持 Java 8。
作为 Some Guy mentioned in a comment, a new Gradle plugin is probably going to supercede this one at some point, but the author FibreFoX writes 到 "please live with the plugin in it's current state, as long as you can"。这似乎意味着被困在类路径上随 JavaFX 一起提供的 Java 的旧版本。
顺便说一句,考虑到新的 java 依赖 DAG 系统,维护插件的问题可能与打包有关; 8 是使用旧类路径系统的最后一个版本。
我很乐意找到更好的答案。
我确实安装了 openjfx(通过 dnf),我相信它正在寻找的 jar 是安装在以下路径的那个:
/usr/lib/jvm/openjfx/lib/ant-javafx.jar
显然我想避免像那样硬编码 jar 路径,但我什至还没有找到使用该路径的方法。这是 gradle 输出:
$ gradle tasks
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'testproj'.
> Couldn't find Ant-JavaFX-library, please make sure you've installed some JDK which includes JavaFX (e.g. OracleJDK or OpenJDK and OpenJFX), and JAVA_HOME is set properly.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/4.9/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 0s
和gradle --version
:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/home/travis/opt/gradle/4.9/lib/groovy-all-2.4.12.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
------------------------------------------------------------
Gradle 4.9
------------------------------------------------------------
Build time: 2018-07-16 08:14:03 UTC
Revision: efcf8c1cf533b03c70f394f270f46a174c738efc
Kotlin DSL: 0.18.4
Kotlin: 1.2.41
Groovy: 2.4.12
Ant: Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM: 10.0.2 ("Oracle Corporation" 10.0.2+13)
OS: Linux 4.18.9-200.fc28.x86_64 amd64
似乎没有一个好的答案,除了暂时坚持 Java 8。
作为 Some Guy mentioned in a comment, a new Gradle plugin is probably going to supercede this one at some point, but the author FibreFoX writes 到 "please live with the plugin in it's current state, as long as you can"。这似乎意味着被困在类路径上随 JavaFX 一起提供的 Java 的旧版本。
顺便说一句,考虑到新的 java 依赖 DAG 系统,维护插件的问题可能与打包有关; 8 是使用旧类路径系统的最后一个版本。
我很乐意找到更好的答案。