Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8357914

TestEmptyBootstrapMethodsAttr.java fails when run with TEST_THREAD_FACTORY=Virtual

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 25
    • 25
    • hotspot
    • 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.

            pchilanomate Patricio Chilano Mateo
            pchilanomate Patricio Chilano Mateo
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: