[
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)