【问题标题】:Is Maven ready for JDK9?Maven 准备好迎接 JDK9 了吗?
【发布时间】:2018-03-24 21:06:41
【问题描述】:

今天我尝试了latest jdk9 Build 113并尝试用最新的Maven 3.3.9编译my project

这些是命令(部分找到via twitter

export MVN_OPTS="-Dmaven.compiler.fork -Dmaven.compiler.executable=/somewhere/Downloads/jdk-9/bin/javac"
export JAVA_HOME="/somewhere/Downloads/jdk-9"
mvn clean install

但我得到this error ...简而言之:

[WARNING] Error injecting: org.codehaus.plexus.archiver.jar.JarArchiver
java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-ea/Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-ea/NativeConstructorAccessorImpl.java:62)

...

at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(AbstractZipArchiver.java:116)
    ... 89 more
[WARNING] Error injecting: org.apache.maven.plugin.jar.JarMojo
java.lang.ExceptionInInitializerError
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(java.base@9-ea/Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(java.base@9-ea/NativeConstructorAccessorImpl.java:62)

...

at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(AbstractZipArchiver.java:116)
    ... 89 more

用于 JDK9 的正确 maven 配置或参数是什么?

$ mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47+01:00)
Maven home: /home/somewhere/Downloads/maven
Java version: 9-ea, vendor: Oracle Corporation
Java home: /home/somewhere/Downloads/jdk-9
Default locale: en_US, platform encoding: UTF-8
OS name: "linux",...

【问题讨论】:

标签: maven maven-3 java-9


【解决方案1】:

这是一位 Maven PMC 成员(我)的回答:

不,不是。罗伯特·肖尔特正在研究它。 Jigsaw 和其他东西引入了很多变化。没有提供完全兼容(Maven + 官方插件)的官方时间表。

您看到的问题实际上不是 Maven,而是 Plexus Archiver。请参阅他们的 GitHub 页面。如果您认为可以增加价值,请联系 maven-dev 邮件列表。

进度文档:https://cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw

【讨论】:

  • 啊,非常感谢!我以为我在某处读到这已经成为可能。你的意思是这个github repo吗? github.com/codehaus-plexus/plexus-archiver/issues
  • @Karussell 是的,这就是问题跟踪器。您也可以手动尝试作为 plexus 归档器快照。
【解决方案2】:

是的,现在已经准备好了。还有一些事情正在进行中,但通常可以使用。 以a project of mine 为例。

【讨论】:

  • 您分享的项目使用编译器和 jar 插件,但我们将获得更多插件,如 jlink、jmod、jdeps。并且该项目不提供自动模块和未命名模块的示例。我认为 Maven 团队仍在研究它们。
  • 不确定.. 但通常可用 .. 在这里是什么意思。我相信这个答案太笼统了。理想情况下会关注其他one by Michael,而不是成为可靠的来源。
  • Eclipse 的 M2E 插件似乎还没有准备好:stackoverflow.com/questions/47228377/…
【解决方案3】:

更新:现在应该可以在没有此解决方法的情况下工作。

plexus 存档团队已经解决了这个问题,但尚未发布 - 感谢 Michael-O 为我指出正确的位置 :)!

现在 ctomc 在PR 12 中发布了一个解决方法,以使用旧的 plexus 存档器版本 2.4.4。:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.4.1</version>                    
    <dependencies>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-archiver</artifactId>
            <version>2.4.4</version>
        </dependency>
    </dependencies>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <dependencies>
        <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-archiver</artifactId>
            <version>2.4.4</version>
        </dependency>
    </dependencies>
</plugin>

【讨论】:

    【解决方案4】:

    Java doc 插件在上一个版本中仍然存在问题。 (3.0.0.M1)

    【讨论】:

      【解决方案5】:

      我认为 maven 现在已经准备好了,对我来说,下面的 sn-p 能够告诉 maven 使用 java 9:

      <build>
          <plugins>
              <plugin>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>3.7.0</version>
                  <configuration>
                      <source>9</source>
                      <target>9</target>
                  </configuration>
              </plugin>
          </plugins>
      </build>
      

      【讨论】:

      • 只是编译器插件的更新并不能证明 maven 的准备就绪,answer 有一个链接可以完全准备好 maven。答案也与最初的问题错误无关。
      【解决方案6】:

      我遇到了同样的问题,最近发布的最新 maven-javadoc-plugin 修复了它。将pom文件中的依赖更新为&lt;version&gt;3.0.0-M1&lt;/version&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        相关资源
        最近更新 更多