I'm trying to develop a Gradle project which involves JavaFX.
Specs: Linux Mint 18.3, Java 11, Eclipse 2019-06, JavaFX: either 13 or 11...
A couple of useful answers to questions have helped me over the past hours: this one tells me (with useful clonable example) how to configure things, at least using a Java file to hold my project's main class (in fact I ultimately want to write all my code in Groovy ideally), in order to overcome the error "JavaFX runtime components are missing, and are required to run this application".
But Eclipse doesn't like it when you add the final step: the file module-info.java. At this point I have to confess I know nothing whatsoever about Eclipse "modules": only that this unknown aspect of the IDE has occasionally caused me frustrating headaches in the past. Probably time to read up on it now.
I should also clarify that at this point the Gradle tasks build
and installdist
(or assemble
) work fine at the CLI. I am only concerned about getting rid of these horrid Eclipse white-cross-in-red-box error marks:
- in module-info.java: "javafx.controls cannot be resolved to a module"
- in Main.java: all the JavaFX classes have this next to them "Application [etc.] cannot be resolved to a type", and all the imports have "The type javafx.scene.Scene [etc.] is not accessible"
This answer says to download the JavaFX-JDK and then add various .jars from it to your project's module path. I did that: the horrid errors all disappeared!
Next time I did a Gradle - Refresh
they all came back. I checked module path: all these .jar files had been removed. How can I stop the Gradle-Eclipse functionality messing with my configured module path?
edit
re the comment by Slaw: yes, already using
id 'org.openjfx.javafxplugin' version '0.0.8'
... my build.gradle javafx block looks like this:
javafx {
version = "13"
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
(NB I have now tried experimenting by adding 'javafx.graphics' and 'javafx.base' to the above.)
The issue is that Gradle - Refresh
nevertheless causes the above "disappearing .jars" phenomenon.
I tried adding this to my plugins block:
id 'org.javamodularity.moduleplugin' version '1.6.0' apply true/false // NB tried both
... no go: Gradle - Refresh
leads to an incomprehensible (to me) error:
An exception occurred applying plugin request [id: 'org.openjfx.javafxplugin', version: '0.0.8']
> Failed to apply plugin [id 'org.openjfx.javafxplugin']
> Could not create task ':configJavafxRun'.
> Could not create task of type 'ExecTask'.
> Could not generate a decorated class for class org.openjfx.gradle.tasks.ExecTask.
> org/javamodularity/moduleplugin/tasks/ModuleOptions