Open oowekyala opened 1 year ago
I was starting it from IntelliJ IDEA with the Run Configuration "Designer (JRE 17)" and the profiles
<profile>
<id>with-javafx17</id>
<properties>
<openjfx.version>17.0.7</openjfx.version>
</properties>
</profile>
I see these warnings on startup:
OpenJDK 64-Bit Server VM warning: Ignoring option --illegal-access=warn; support was removed in 17.0
WARNING: Unknown module: javafx.controls specified to --add-opens
WARNING: Unknown module: javafx.controls specified to --add-opens
Juni 10, 2023 12:06:24 PM com.sun.javafx.application.PlatformImpl startup
WARNUNG: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @71250d6a'
Note: I'm using openjdk from adoptium.net.
I just noticed, that the run configuration is only local. But it is essentially the same as "Designer (JRE 11)", but using java17 as JRE, not exposing the env var "JAVAFX_HOME" (that's anyway not used).
Starting the designer from the binary dist, I use
I get just the following warning on startup:
[JavaFX-Launcher] WARN javafx - Unsupported JavaFX configuration: classes were loaded from 'unnamed module @7923f745'
That's essentially the problem, we don't use modules and javafx should be used via modules. I've buried this deep down in my TODO list:
Thanks for the update!
I tried your with-javafx17
profile but from the IDE I get java.lang.NoClassDefFoundError: org/apache/commons/lang3/SystemUtils
after the javafx warnings you also have. For some reason intellij doesn't add the dependencies correctly from the maven config.
The app starts now with JDK 21 (from openjdk), Oracle's JDK 17.0.7 and Graalvm 22, using JavaFX 17.0.7 via JAVAFX_HOME. I suppose there is something wrong with my Zulu SDK...
That's essentially the problem, we don't use modules and javafx should be used via modules. I've buried this deep down in my TODO list:
That would be nice in the long term. Do you know, whether this can be done without migrating all PMD modules to use java modules too?
I've tested it now:
--add-opens javafx.fxml/com.sun.javafx.fxml.builder=ALL-UNNAMED
** However, with that in place, I get
Caused by: java.lang.RuntimeException: Cannot create instance of net.sourceforge.pmd.util.fxdesigner.util.controls.NodeEditionCodeArea with given set of properties: [stylesheets, designerRoot]
at javafx.fxml/com.sun.javafx.fxml.builder.ProxyBuilder.build(ProxyBuilder.java:272)
Which probably means, that this internal class changed in an incompatible way.
With be130917c60b87710949c8d1c8bef0a25ac40450 we use now openjfx 17 by default. However, we don't yet support the azul jdk+fx builds, we probably need to use the module system properly: E.g. it is no problem to use oracle's java 8 build, which also includes javafx, because there is no module system, that disallows access to internal classes. But since java 9, these access restrictions are enforced. When using openjfx via classpath (as we do with JAVAFX_HOME), then there are also no enforced restrictions yet.
However, we don't use javafx correctly:
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @b121a86'
I guess, the first step would be, to integrate JavaFX as a module. PMD Designer + PMD would be in an unnamed module. We need then to get rid of any hacks and workarounds (e.g. --add-opens is forbidden). Then it might just work with any Java build, that includes openjfx as a module.
I have trouble launching the designer both from within an IDE, from the maven exec task, and from the binary distribution. I tried with a JDK 11 and 17 packaged by Amazon Zulu, which comes with JavaFX included, and got various errors. I also tried with a manual install of the JavaFX 17 SDK and with the
JAVAFX_HOME
env var that is recognized by our launch script and got the same errors.@adangel can you describe your setup to run the designer with JavaFX 17?
Using pmd-dist-bin
Launches with JDK 11, but I get the following warning:
Apparently this check doesn't match. The reported
$java_vendor $java_ver
isopenjdk 110
.With JDK 17 I get the following:
When adding
--add-opens javafx.fxml/com.sun.javafx.fxml.builder=ALL-UNNAMED
explicitly I getUsing the maven task / IDE
./mvnw -Prunning,with-javafx exec:java
With both JDKs I get the following:
This exception also happens when I launch the app from within Intellij using the provided run configurations.
Java 17 warning
I get the following warning on app startup with JDK 17