gradlejavafxjava-10openjfxjavafx-gradle-plugin

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?


I do have openjfx installed (via dnf), and I believe the jar it's looking for is the one installed at the following path:

/usr/lib/jvm/openjfx/lib/ant-javafx.jar

Obviously I'd like to avoid hard-coding jar paths like that, but I haven't even found a way to use that path. Here is gradle output:

$ 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

and 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

Solution

  • Seems like there isn't a good answer, except to stick with Java 8 for now.

    As 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 to "please live with the plugin in it's current state, as long as you can". That seems to mean being stuck at an old version of Java that shipped with JavaFX on the classpath.

    As an aside, the problems with maintaining the plugin probably have to do with packaging, given the new java dependency DAG system; 8 is the last version that used the old classpath system.

    I'd be happy to find a better answer.