JonathanGiles / scenic-view

Scenic View is a JavaFX application designed to make it simple to understand the current state of your application scenegraph, and to also easily manipulate properties of the scenegraph without having to keep editing your code. This lets you find bugs, and get things pixel perfect without having to do the compile-check-compile dance.
GNU General Public License v3.0
523 stars 68 forks source link

Please document how to build with later versions of jdk and openjfx #56

Open daveyostcom opened 4 years ago

daveyostcom commented 4 years ago

I start with this, which works:

cd /tmp
git clone --depth=1 https://github.com/JonathanGiles/scenic-view.git
cd scenic-view
gradlew build
gradlew jlink
build/scenicview/bin/scenicView

Then I run my app with java -javaagent:/tmp/scenic-view/build/scenicview/lib/scenicview.jar

My app complains thus:

Exception in thread "JavaFX Application Thread" java.lang.IllegalAccessError: superclass access check failed: class com.sun.javafx.sg.prism.web.NGWebView (in unnamed module @0x33b37288) cannot access class com.sun.javafx.sg.prism.NGGroup (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.sg.prism to unnamed module @0x33b37288

What do I need to do, exactly?

Is this happening because my app is running on java 13 (build 13+33) using javafx 13.0.2 ?

Groostav commented 3 years ago

similar, I've got complaints about embedded swing components, webview, amongst others. Once all the exceptions are gone (which I achieved by dumping a bunch of javafx jars onto my classpath) my application is still not appearing in the scenicview window.

This tool was instrumental to us building for java-8, since then we ported to java 13, and I cant describe how frustrating it is not to have this fabulous tool in my toolbelt anymore.

Groostav commented 3 years ago

I've also tried building this for java 13, but gradle wont run on java 13. I guess the thing I'm being frustraited by is my lack of understanding for the IPC hooks? I don't understand why a jar built for java 11 wouldn't properly instrument a java 13 application when run with -javaagent. It seems like there's some fairly brittle IPC devices here that I need more understanding of.