-
Bug
-
Resolution: Fixed
-
P4
-
25
-
master
The test launches a child process with the only purpose of validating that the load of mainClass (emptynumbootstrapmethods1/emptynumbootstrapmethods2) completes successfully and doesn’t throw ClassFormatError. The class doesn’t define a main method, so later during execution of LauncherHelper.validateMainMethod the child VM exits with the following error message which we check from the OutputAnalyzer output:
Error: Main method not found in class emptynumbootstrapmethods1, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
The issue when the test is run with TEST_THREAD_FACTORY=Virtual is that loading of emptynumbootstrapmethods1 is done in jdk.test.lib.process.ProcessTools.main (the actual entry point), which instead of calling MethodFinder.findMainMethod(mainClass) uses
“Method mainMethod = c.getMethod("main", new Class<?>[] { String[].class });” which throws an exception instead and the test exits with the following error message:
[Exception in thread "main" java.lang.NoSuchMethodException: emptynumbootstrapmethods1.main([Ljava.lang.String;)
at java.base/java.lang.Class.getMethod(Class.java:2166)
at jdk.test.lib.process.ProcessTools.main(ProcessTools.java:984)
We need to adjust the output we check for based on whether the test was run on a platform thread or a virtual thread.
Error: Main method not found in class emptynumbootstrapmethods1, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
The issue when the test is run with TEST_THREAD_FACTORY=Virtual is that loading of emptynumbootstrapmethods1 is done in jdk.test.lib.process.ProcessTools.main (the actual entry point), which instead of calling MethodFinder.findMainMethod(mainClass) uses
“Method mainMethod = c.getMethod("main", new Class<?>[] { String[].class });” which throws an exception instead and the test exits with the following error message:
[Exception in thread "main" java.lang.NoSuchMethodException: emptynumbootstrapmethods1.main([Ljava.lang.String;)
at java.base/java.lang.Class.getMethod(Class.java:2166)
at jdk.test.lib.process.ProcessTools.main(ProcessTools.java:984)
We need to adjust the output we check for based on whether the test was run on a platform thread or a virtual thread.
- duplicates
-
JDK-8346442 Virtual Threads: Fix 2 tests
-
- Closed
-
- links to
-
Commit(master) openjdk/jdk/c59e44a7
-
Review(master) openjdk/jdk/25509