Tobias Gierke created SUREFIRE-2201:
---------------------------------------

             Summary: JDK21:  Crash when using new '_' wildcard preview feature 
in test classes
                 Key: SUREFIRE-2201
                 URL: https://issues.apache.org/jira/browse/SUREFIRE-2201
             Project: Maven Surefire
          Issue Type: Bug
            Reporter: Tobias Gierke
         Attachments: image-2023-10-11-14-43-20-661.png, jdk21-surefire-test.zip

Tested with Eclipse Temurin-21+35 (build 21+35-LTS) and Maven 3.9.1 on Ubuntu 
22.04.03 LTS

I've attached a reproducer project, running "mvn test" will trip the crash. 


{code:java}
 [ERROR] Failed to execute goal 
org.apache.maven.plugins:maven-surefire-plugin:3.1.2:test (default-test) on 
project jdk21-surefire-test:  [ERROR]  [ERROR] Please refer to 
/extra/home/tobi/intellij_workspace/jdk21-surefire-test/target/surefire-reports 
for the individual test results. [ERROR] Please refer to dump files (if any 
exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream. [ERROR] There 
was an error in the forked process [ERROR] Illegal field name "" in class 
test/MainTest [ERROR] java.lang.ClassFormatError: Illegal field name "" in 
class test/MainTest [ERROR]         at 
java.base/java.lang.ClassLoader.defineClass1(Native Method) [ERROR]         at 
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027) [ERROR]      
   at 
java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
 [ERROR]         at 
java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
 [ERROR]         at 
java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
 [ERROR]         at 
java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
 [ERROR]         at 
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
 [ERROR]         at 
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
 [ERROR]         at 
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) [ERROR]         
at 
org.apache.maven.surefire.api.util.DefaultScanResult.loadClass(DefaultScanResult.java:115)
 [ERROR]         at 
org.apache.maven.surefire.api.util.DefaultScanResult.applyFilter(DefaultScanResult.java:85)
 [ERROR]         at 
org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.scanClasspath(JUnitPlatformProvider.java:142)
 [ERROR]         at 
org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:122)
 [ERROR]         at 
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
 [ERROR]         at 
org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) 
[ERROR]         at 
org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) 
[ERROR]         at 
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) {code}
What's interesting about this bug is that my reproducer project also contains a 
"Main" class that uses the '_' wildcard as well and compiling this one using 
"mvn compile" and then trying to run it using "java" directly leads to the same 
crash:

!image-2023-10-11-14-43-20-661.png!

BUT compiling the code manually using "javac"
{code:java}
mvn clean ; mkdir -p target/classes && javac -d target/classes --source 21 
--enable-preview src/main/java/test/Main.java {code}
and then running it again with "java"
{code:java}
 java --enable-preview -cp target/classes test.Main
{code}
does *NOT* crash ... so this seems to be somehow related to the way Maven uses 
the Java compiler.

Please move this issue to maven-compiler-plugin if more appropriate.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to