RFR: 8357914: TestEmptyBootstrapMethodsAttr.java fails when run with TEST_THREAD_FACTORY=Virtual

Patricio Chilano Mateo pchilanomate at openjdk.org
Wed May 28 19:49:32 UTC 2025


Please review this small test fix. The test launches a child process with the only purpose of validating that the load of the main class (`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)` and aborting if result is null like `LauncherHelper` 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)


The proposed fix adjusts the output we check for based on whether the test was run on a platform thread or a virtual thread.

Thanks,
Patricio

-------------

Commit messages:
 - v1

Changes: https://git.openjdk.org/jdk/pull/25509/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25509&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8357914
  Stats: 14 lines in 2 files changed: 10 ins; 3 del; 1 mod
  Patch: https://git.openjdk.org/jdk/pull/25509.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25509/head:pull/25509

PR: https://git.openjdk.org/jdk/pull/25509


More information about the hotspot-runtime-dev mailing list