[ https://issues.apache.org/jira/browse/SUREFIRE-1788?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17149984#comment-17149984 ]
Alexander Kriegisch edited comment on SUREFIRE-1788 at 7/2/20, 7:53 AM: ------------------------------------------------------------------------ More details: In the first module I use {{--patch-module java.base=my-module.jar}} in order to replace some JRE classes with ones transformed previously. This is a standard Java 9+ mechanism and works in M4. Here it yields: {code} Caused by: org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye. VM crash or System.exit called? Command was cmd.exe /X /C ""C:\Program Files\Java\jdk-14.0.1\bin\java" --patch-module java.base=C:\Users\alexa\Documents\java-src\Sarek/sarek-test-parent/sarek-test-instrument-jre/target/sarek-test-instrument-jre-1.0-SNAPSHOT.jar @C:\Users\alexa\AppData\Local\Temp\surefire15096384209999517481\surefireargs3116854532139924378 C:\Users\alexa\AppData\Local\Temp\surefire15096384209999517481 2020-07-02T13-39-23_294-jvmRun1 surefire1552621043222686930tmp surefire_18461319190598997928tmp" Error occurred in starting fork, check output in log {code} The log says: {code} Error occurred during initialization of boot layer java.lang.module.ResolutionException: Module sarek.test.instrument.jre contains package java.lang, module java.base exports package java.lang to sarek.test.instrument.jre {code} How can this suddenly be a problem just because there is a new Maven plugin version? Is JVM forking done differently than before now? In the second module with my {{-javaagent:/path/to/agent.jar}} suddenly some of my agent classes are no longer found, even though the agent has a {{Boot-Class-Path: agent.jar}} manifest entry. Running the same test from command line, IDE or Maven Failsafe M4 version works. But M5 says: {code} org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process dev/sarek/agent/aspect/AroundAdvice at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:733) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:305) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:265) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1314) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1159) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:932) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289) at org.apache.maven.cli.MavenCli.main(MavenCli.java:193) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347) at org.codehaus.classworlds.Launcher.main(Launcher.java:47) {code} And {code} java.lang.NoClassDefFoundError: dev/sarek/agent/aspect/AroundAdvice at java.base/java.lang.Class.getDeclaredMethods0(Native Method) at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3244) at java.base/java.lang.Class.getMethodsRecursive(Class.java:3385) at java.base/java.lang.Class.getMethod0(Class.java:3371) at java.base/java.lang.Class.getMethod(Class.java:2120) at org.apache.maven.surefire.api.util.ReflectionUtils.tryGetMethod(ReflectionUtils.java:60) at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isSuiteOnly(JUnit3TestChecker.java:66) at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isValidJUnit3Test(JUnit3TestChecker.java:61) at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.accept(JUnit3TestChecker.java:56) at org.apache.maven.surefire.common.junit4.JUnit4TestChecker.accept(JUnit4TestChecker.java:53) at org.apache.maven.surefire.common.junit48.JUnit48TestChecker.accept(JUnit48TestChecker.java:51) at org.apache.maven.surefire.api.util.DefaultScanResult.applyFilter(DefaultScanResult.java:102) at org.apache.maven.surefire.junitcore.JUnitCoreProvider.scanClassPath(JUnitCoreProvider.java:292) at org.apache.maven.surefire.junitcore.JUnitCoreProvider.setTestsToRun(JUnitCoreProvider.java:198) at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:132) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:428) at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:562) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:548) Caused by: java.lang.ClassNotFoundException: dev.sarek.agent.aspect.AroundAdvice at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 19 more {code} That class is meant to be on the bootstrap class path, so how can it not be found? and how can it change in between Maven plugin versions? Why would Maven even want to resolve those classes? *Update:* About the first error: Does Failsafe somehow declare my JAR as a Java 9+ module (which it is not!), trying to be smart? *Update 2:* According to other sources, this kind of thing seems to happen if you put something on the module path that actually should be on the normal class path because it is not meant to conform to Java module conventions. So probably there is the change in Surefire/Failsafe between versions M4 and M5. was (Author: kriegaex): More details: In the first module I use {{--patch-module java.base=my-module.jar}} in order to replace some JRE classes with ones transformed previously. This is a standard Java 9+ mechanism and works in M4. Here it yields: {code} Caused by: org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM terminated without properly saying goodbye. VM crash or System.exit called? Command was cmd.exe /X /C ""C:\Program Files\Java\jdk-14.0.1\bin\java" --patch-module java.base=C:\Users\alexa\Documents\java-src\Sarek/sarek-test-parent/sarek-test-instrument-jre/target/sarek-test-instrument-jre-1.0-SNAPSHOT.jar @C:\Users\alexa\AppData\Local\Temp\surefire15096384209999517481\surefireargs3116854532139924378 C:\Users\alexa\AppData\Local\Temp\surefire15096384209999517481 2020-07-02T13-39-23_294-jvmRun1 surefire1552621043222686930tmp surefire_18461319190598997928tmp" Error occurred in starting fork, check output in log {code} The log says: {code} Error occurred during initialization of boot layer java.lang.module.ResolutionException: Module sarek.test.instrument.jre contains package java.lang, module java.base exports package java.lang to sarek.test.instrument.jre {code} How can this suddenly be a problem just because there is a new Maven plugin version? Is JVM forking done differently than before now? In the second module with my {{-javaagent:/path/to/agent.jar}} suddenly some of my agent classes are no longer found, even though the agent has a {{Boot-Class-Path: agent.jar}} manifest entry. Running the same test from command line, IDE or Maven Failsafe M4 version works. But M5 says: {code} org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process dev/sarek/agent/aspect/AroundAdvice at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:733) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:305) at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:265) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1314) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1159) at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:932) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289) at org.apache.maven.cli.MavenCli.main(MavenCli.java:193) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347) at org.codehaus.classworlds.Launcher.main(Launcher.java:47) {code} And {code} java.lang.NoClassDefFoundError: dev/sarek/agent/aspect/AroundAdvice at java.base/java.lang.Class.getDeclaredMethods0(Native Method) at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3244) at java.base/java.lang.Class.getMethodsRecursive(Class.java:3385) at java.base/java.lang.Class.getMethod0(Class.java:3371) at java.base/java.lang.Class.getMethod(Class.java:2120) at org.apache.maven.surefire.api.util.ReflectionUtils.tryGetMethod(ReflectionUtils.java:60) at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isSuiteOnly(JUnit3TestChecker.java:66) at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isValidJUnit3Test(JUnit3TestChecker.java:61) at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.accept(JUnit3TestChecker.java:56) at org.apache.maven.surefire.common.junit4.JUnit4TestChecker.accept(JUnit4TestChecker.java:53) at org.apache.maven.surefire.common.junit48.JUnit48TestChecker.accept(JUnit48TestChecker.java:51) at org.apache.maven.surefire.api.util.DefaultScanResult.applyFilter(DefaultScanResult.java:102) at org.apache.maven.surefire.junitcore.JUnitCoreProvider.scanClassPath(JUnitCoreProvider.java:292) at org.apache.maven.surefire.junitcore.JUnitCoreProvider.setTestsToRun(JUnitCoreProvider.java:198) at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:132) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:428) at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:562) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:548) Caused by: java.lang.ClassNotFoundException: dev.sarek.agent.aspect.AroundAdvice at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 19 more {code} That class is meant to be on the bootstrap class path, so how can it not be found? and how can it change in between Maven plugin versions? Why would Maven even want to resolve those classes? *Update:* About the first error: Does Failsafe somehow declare my JAR as a Java 9+ module (which it is not!), trying to be smart? > Unhandled native logs in SurefireForkChannel > -------------------------------------------- > > Key: SUREFIRE-1788 > URL: https://issues.apache.org/jira/browse/SUREFIRE-1788 > Project: Maven Surefire > Issue Type: Task > Components: Maven Failsafe Plugin, Maven Surefire Plugin, process > forking > Reporter: Tibor Digana > Assignee: Tibor Digana > Priority: Major > Fix For: 3.0.0-M5 > > > This is related only to the internal change of the version 3.0.0-M5 itself. > The > [stdOut|https://github.com/apache/maven-surefire/blob/master/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/extensions/SurefireForkChannel.java#L153] > should be printed to INFO on the console. -- This message was sent by Atlassian Jira (v8.3.4#803005)