当前位置: 首页 > 知识库问答 >
问题:

Maven准备好JDK9了吗?

濮阳奇逸
2023-03-14

今天,我尝试了最新的jdk9版本113,并尝试使用最新的Maven 3.3.9编译我的项目

这些是命令(部分通过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

但是我得到这个错误...总之:

[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",...

共有3个答案

狄旻
2023-03-14

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

这个问题已经从丛存档团队修复,但尚未发布-感谢Michael-O给我指出了正确的位置:)!

现在,ctomc在PR 12中发布了一个使用旧plexus archiver版本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>
龚铭
2023-03-14

是的,现在已经准备好了。还有一些东西在进行中,但总体可用。以我的一个项目为例。

贺彬
2023-03-14

以下是一位Maven PMC会员(我)的回答:

不,不是的。罗伯特·舒尔特正在努力。拼图和其他东西引入了很多变化。没有官方的时间表来给出完整的compat (Maven官方插件)。

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

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

 类似资料:
  • 问题内容: 我知道我可以使用诸如prototype或jquery之类的不同框架来将函数附加到window.onload,但这不是我想要的。 我需要.readyState之类的东西,以便可以执行以下操作: 除了使用框架做什么,还有其他方法吗? 问题答案: 我已经更新了DOMAssistant库的代码,对我来说很好

  • 问题内容: 我正在阅读Redis文档,并且我对分区功能最感兴趣。 Redis文档指出以下内容: 数据存储还是缓存?在数据存储或缓存中使用Redis广告时的分区在概念上是相同的,但是存在巨大差异。当将Redis用作数据存储时,您需要确保给定的密钥始终映射到相同的实例,而当Redis用作高速缓存时,如果给定的节点不可用,那么如果我们开始使用不同的节点就不会有太大的问题节点,因为我们希望提高系统的可用性

  • 问题内容: 除了的ORM以外,还有人使用吗? 我想将Django的ORM用于对象操作,将SQLalchemy用于复杂的查询(例如那些需要左外部联接的查询)。 可能吗? 注意:我知道,但是该项目似乎尚未准备就绪。 问题答案: 我会怎么做 在Django orm中定义架构,让它通过syncdb编写数据库。您将获得管理界面。 在view1中,您需要一个复杂的联接

  • 我们的新项目有基于ApacheCXF的生产者SOAP web服务。现在我们计划将Web服务转移到生产环境中。我们正在寻找一个合适的开源容器(Web服务器或应用服务器),用于部署基于CXF的Java Web服务。首先想到的是Tomcat 7。只是需要专家的建议。CXF和基于Tomcat的Web服务的组合目前是否用于其他项目的生产中?这个解决方案是可扩展的吗 谢谢

  • 我有一个在Docker中运行的Cassandra,我想在数据库准备就绪时启动一个CQL脚本。我尝试检查端口以检测它何时就绪: 但是在数据库真正准备好之前就打开了端口,因此失败。如何正确检查Cassandra状态并启动脚本?提前道谢。