TestFX / Monocle

Pre-packaged builds of Monocle (OpenJFX)
GNU General Public License v2.0
49 stars 24 forks source link

Headless testing with version 8u76-b04 does not work on JDK 8u311. Throws java.lang.NoSuchMethodException: com.sun.glass.ui.Screen error #86

Closed lama-akeila closed 7 months ago

lama-akeila commented 2 years ago

Im running gradle headless tests for javafx using the following versions of the testfx libraries and monocle library testCompile 'org.testfx:testfx-core:4.0.16-alpha' testCompile 'org.testfx:openjfx-monocle:8u76-b04' testCompile 'org.testfx:testfx-junit:4.0.15-alpha'

It works on JDK 8u211 and earlier... On 8u311 the tests hang with the following error:

18:21:13.325 [DEBUG] [TestEventLogger] java.lang.NoSuchMethodException: com.sun.glass.ui.Screen.<init>(long, int, int, int, int, int, int, int, int, int, int, int, float) 18:21:13.326 [DEBUG] [TestEventLogger] at java.lang.Class.getConstructor0(Class.java:3082) 18:21:13.326 [DEBUG] [TestEventLogger] at java.lang.Class.getDeclaredConstructor(Class.java:2178) 18:21:13.326 [DEBUG] [TestEventLogger] at com.sun.glass.ui.monocle.MonocleApplication$2.run(MonocleApplication.java:234) 18:21:13.326 [DEBUG] [TestEventLogger] at com.sun.glass.ui.monocle.MonocleApplication$2.run(MonocleApplication.java:230) 18:21:13.326 [DEBUG] [TestEventLogger] at java.security.AccessController.doPrivileged(Native Method) 18:21:13.326 [DEBUG] [TestEventLogger] at com.sun.glass.ui.monocle.MonocleApplication.staticScreen_getScreens(MonocleApplication.java:229) 18:21:13.326 [DEBUG] [TestEventLogger] at com.sun.glass.ui.Screen.initScreens(Screen.java:412) 18:21:13.327 [DEBUG] [TestEventLogger] at com.sun.glass.ui.Application.lambda$run$1(Application.java:155) 18:21:13.327 [DEBUG] [TestEventLogger] at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:77) 18:21:13.327 [DEBUG] [TestEventLogger] at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:47) 18:21:13.327 [DEBUG] [TestEventLogger] at java.lang.Thread.run(Thread.java:748) 18:21:13.327 [DEBUG] [TestEventLogger] Exception in thread "JavaFX Application Thread" java.lang.NullPointerException 18:21:13.327 [DEBUG] [TestEventLogger] at com.sun.javafx.tk.quantum.QuantumToolkit.assignScreensAdapters(QuantumToolkit.java:729) 18:21:13.327 [DEBUG] [TestEventLogger] at com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:334) 18:21:13.327 [DEBUG] [TestEventLogger] at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$10(QuantumToolkit.java:279) 18:21:13.327 [DEBUG] [TestEventLogger] at com.sun.glass.ui.Application.lambda$run$1(Application.java:156) 18:21:13.328 [DEBUG] [TestEventLogger] at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:77) 18:21:13.328 [DEBUG] [TestEventLogger] at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:47) 18:21:13.328 [DEBUG] [TestEventLogger] at java.lang.Thread.run(Thread.java:748) 18:21:15.316 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running 18:21:15.320 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry. 18:21:15.320 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired. 18:21:15.322 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry. 18:21:15.325 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry. 18:21:15.325 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired. 18:21:15.326 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.

lama-akeila commented 2 years ago

MonocleApplication.java needs to be fixed. The staticScreen_getScreens() method needs to define the correct constructor with 20 parameters for com.sun.glass.ui.Screen.java.

Constructor c = AccessController.doPrivileged( new PrivilegedAction<Constructor>() { @Override public Constructor run() { try { Constructor c = Screen.class.getDeclaredConstructor( Long.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Integer.TYPE, Float.TYPE, Float.TYPE, Float.TYPE, Float.TYPE);

and it needs to be instantiated with the 20 parameters. Currently it only has 13 parameters which creates the above error.

mvsoder commented 7 months ago

A new Monocle build for JDK 8.0.372 was released yesterday: https://central.sonatype.com/artifact/org.testfx/openjfx-monocle/versions