Re: JDK9: Failed to parse module-info.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: JDK9: Failed to parse module-info.java

Karl Heinz Marbaise-3
Hi Robert,

I've made a separate issue MCOMPILER-304 to introduce plexus-language
component.

Kind regards
Karl Heinz Marbaise

On 12/08/17 19:23, Robert Scholte wrote:

> Hi,
>
> short answer: to be able to compile Java 9 projects, you must use the
> JRE from Maven (i.e. JAVA_HOME must point to JDK 9).
>
> The long story: asm-6.0_ALPHA is based on an old format of the
> module-info file. Only a few weeks ago asm-6.0_BETA was released. There
> was over a year between these 2 versions and I think is was relatively
> soon after ALPHA that the format was changed.
> The first solution I had implemented was using QDox during also during
> test to read the module-info.java, which is not correct. Test should be
> using the compiled version, i.e. module-info.class.
> So I implemented a reflection-based implementation and replaced it for
> QDox. This implementation uses reflection to access the
> module-descriptor. But this means that Maven must be running with Java
> 9. Toolchain doesn't help here.
>
> Right now I have the code ready to replace this. I also have started a
> new project called plexus-languages[1], which has plexus-java. This
> contains JRE/JDK related code which is used my multiple plugins /
> libraries.
> Most important: this code is NOT related to Maven!
>
> One of the most important features: based on a JavaModuleDescriptor and
> a set of jars + output directories and can make an accurate separation
> for modulepath and classpath. Any feedback is appreciated.
>
> thanks,
> Robert
>
> [1] https://github.com/codehaus-plexus/plexus-languages
>
>
> On Sat, 12 Aug 2017 17:44:03 +0200, Karl Heinz Marbaise
> <[hidden email]> wrote:
>
>> Hi,
>>
>> currently I'm facing the following issue with JDK9+181: (using
>> maven-compiler-plugin:3.6.2):
>>
>> [DEBUG] CompilerReuseStrategy: reuseCreated
>> [DEBUG] useIncrementalCompilation enabled
>> [ERROR] Failed to parse module-info:
>> [ERROR] With reflect: null
>> [ERROR] With asm: null
>>
>> [ERROR] Failed to execute goal
>> org.apache.maven.plugins:maven-compiler-plugin:3.6.2:testCompile
>> (default-testCompile) on project devday-workshop-service: Execution
>> default-testCompile of goal
>> org.apache.maven.plugins:maven-compiler-plugin:3.6.2:testCompile
>> failed: Failed to parse module-info -> [Help 1]
>> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to
>> execute goal
>> org.apache.maven.plugins:maven-compiler-plugin:3.6.2:testCompile
>> (default-testCompile) on project devday-workshop-service: Execution
>> default-testCompile of goal
>> org.apache.maven.plugins:maven-compiler-plugin:3.6.2:testCompile
>> failed: Failed to parse module-info
>>     at
>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
>>
>>     at
>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
>>
>>     at
>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
>>
>>     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:51)
>>
>>     at
>> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
>>
>>     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
>>     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
>>     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
>>     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
>>     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
>>     at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>     at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>
>>     at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>
>>     at java.lang.reflect.Method.invoke(Method.java:606)
>>     at
>> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
>>
>>     at
>> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
>>
>>     at
>> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
>>
>>     at
>> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
>> Caused by: org.apache.maven.plugin.PluginExecutionException: Execution
>> default-testCompile of goal
>> org.apache.maven.plugins:maven-compiler-plugin:3.6.2:testCompile
>> failed: Failed to parse module-info
>>     at
>> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
>>
>>     at
>> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
>>
>>     ... 20 more
>> Caused by: java.lang.RuntimeException: Failed to parse module-info
>>     at
>> org.apache.maven.plugin.compiler.TestCompilerMojo.getModuleName(TestCompilerMojo.java:328)
>>
>>     at
>> org.apache.maven.plugin.compiler.TestCompilerMojo.preparePaths(TestCompilerMojo.java:265)
>>
>>     at
>> org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:751)
>>
>>     at
>> org.apache.maven.plugin.compiler.TestCompilerMojo.execute(TestCompilerMojo.java:172)
>>
>>     at
>> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
>>
>>     ... 21 more
>>
>> Currently testing the project:
>> https://github.com/khmarbaise/java9-modules-maven-junit-example which
>> I have adopted just to see how it works with Maven using modules etc.
>>
>> Working on the jdk9-fixing branch...which produces the above error ?
>>
>> Any Idea?
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: JDK9: Failed to parse module-info.java

rfscholte
Hi Plamen,

That's right, it is intended for the code being build and the library can be used while running on Java 7. There's only one tricky thing: when there's no module descriptor and no manifest file with an Automatic-Module-Name, then the module name must be calculated based on the filename. Here the library will use Java9 code, either via reflection (when running on Java 9) or JShell.

This piece of code is very likely to be required by the maven-surefire-plugin and maven-javadoc-plugin. But also non-Maven projects can use it if they want.

Any feedback is appreciated,
Robert

On Sun, 13 Aug 2017 17:19:40 +0200, Plamen Totev <[hidden email]> wrote:

Hi Robert,

Plexus Languages looks very promising and really needed component. May I ask you something to clarify if I understand correctly it's purpose. The intention is Plexus Languages to contain abstractions that represent the code that is going to be build and not the JDK/JRE used to run Maven, right?

Regards,
Plamen Totev


On Sun, Aug 13, 2017 at 12:12 AM, Karl Heinz Marbaise <[hidden email]> wrote:
Hi Robert,

I've made a separate issue MCOMPILER-304 to introduce plexus-language component.

Kind regards
Karl Heinz Marbaise

On 12/08/17 19:23, Robert Scholte wrote:
Hi,

short answer: to be able to compile Java 9 projects, you must use the JRE from Maven (i.e. JAVA_HOME must point to JDK 9).

The long story: asm-6.0_ALPHA is based on an old format of the module-info file. Only a few weeks ago asm-6.0_BETA was released. There was over a year between these 2 versions and I think is was relatively soon after ALPHA that the format was changed.
The first solution I had implemented was using QDox during also during test to read the module-info.java, which is not correct. Test should be using the compiled version, i.e. module-info.class.
So I implemented a reflection-based implementation and replaced it for QDox. This implementation uses reflection to access the module-descriptor. But this means that Maven must be running with Java 9. Toolchain doesn't help here.

Right now I have the code ready to replace this. I also have started a new project called plexus-languages[1], which has plexus-java. This contains JRE/JDK related code which is used my multiple plugins / libraries.
Most important: this code is NOT related to Maven!

One of the most important features: based on a JavaModuleDescriptor and a set of jars + output directories and can make an accurate separation for modulepath and classpath. Any feedback is appreciated.

thanks,
Robert

[1] https://github.com/codehaus-plexus/plexus-languages


On Sat, 12 Aug 2017 17:44:03 +0200, Karl Heinz Marbaise <[hidden email]> wrote:

Hi,

currently I'm facing the following issue with JDK9+181: (using maven-compiler-plugin:3.6.2):

[DEBUG] CompilerReuseStrategy: reuseCreated
[DEBUG] useIncrementalCompilation enabled
[ERROR] Failed to parse module-info:
[ERROR] With reflect: null
[ERROR] With asm: null

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.2:testCompile (default-testCompile) on project devday-workshop-service: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.6.2:testCompile failed: Failed to parse module-info -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.2:testCompile (default-testCompile) on project devday-workshop-service: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.6.2:testCompile failed: Failed to parse module-info
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
    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:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-testCompile of goal org.apache.maven.plugins:maven-compiler-plugin:3.6.2:testCompile failed: Failed to parse module-info
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 20 more
Caused by: java.lang.RuntimeException: Failed to parse module-info
    at org.apache.maven.plugin.compiler.TestCompilerMojo.getModuleName(TestCompilerMojo.java:328)
    at org.apache.maven.plugin.compiler.TestCompilerMojo.preparePaths(TestCompilerMojo.java:265)
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:751)
    at org.apache.maven.plugin.compiler.TestCompilerMojo.execute(TestCompilerMojo.java:172)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    ... 21 more

Currently testing the project: https://github.com/khmarbaise/java9-modules-maven-junit-example which I have adopted just to see how it works with Maven using modules etc.

Working on the jdk9-fixing branch...which produces the above error ?

Any Idea?


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]





Loading...