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

Reply via email to