JDK9 and maven-jar-plugin
13,983
The chances are mostly of an incompatible maven-plugin version in your module. You could try to update the plugin configuration in the parent module to the following and test:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.9</source>
<target>1.9</target>
<jdkToolchain>
<version>9</version>
</jdkToolchain>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
</plugins>
</build>
For the list of compatible versions of all the plugins, do refer to Maven#Java9+Jigsaw
Related videos on Youtube
Comments
-
JeanValjean almost 2 years
I just upgraded my Java8 project with the brand new official release of Java9.
The project uses a Maven plugin,
org.apache.maven.plugins:maven-jar-plugin
version 2.6. When I run mvn clean install I now get the following exception:ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar (default-jar) on project my-test-utils: Execution default-jar of goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-jar-plugin:2.6:jar: java.lang.ExceptionInInitializerError: null [ERROR] ----------------------------------------------------- [ERROR] realm = plugin>org.apache.maven.plugins:maven-jar-plugin:2.6 [ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy [ERROR] urls[0] = file:/Users/jeanvaljean/.m2/repository/org/apache/maven/plugins/maven-jar-plugin/2.6/maven-jar-plugin-2.6.jar [ERROR] urls[1] = file:/Users/jeanvaljean/.m2/repository/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.jar [ERROR] urls[2] = file:/Users/jeanvaljean/.m2/repository/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.jar [ERROR] urls[3] = file:/Users/jeanvaljean/.m2/repository/org/apache/maven/reporting/maven-reporting-api/2.2.1/maven-reporting-api-2.2.1.jar [ERROR] urls[4] = file:/Users/jeanvaljean/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.1/doxia-sink-api-1.1.jar [ERROR] urls[5] = file:/Users/jeanvaljean/.m2/repository/org/apache/maven/doxia/doxia-logging-api/1.1/doxia-logging-api-1.1.jar [ERROR] urls[6] = file:/Users/jeanvaljean/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar [ERROR] urls[7] = file:/Users/jeanvaljean/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar [ERROR] urls[8] = file:/Users/jeanvaljean/.m2/repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar [ERROR] urls[9] = file:/Users/jeanvaljean/.m2/repository/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar [ERROR] urls[10] = file:/Users/jeanvaljean/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar [ERROR] urls[11] = file:/Users/jeanvaljean/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar [ERROR] urls[12] = file:/Users/jeanvaljean/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.jar [ERROR] urls[13] = file:/Users/jeanvaljean/.m2/repository/org/apache/maven/maven-archiver/2.6/maven-archiver-2.6.jar [ERROR] urls[14] = file:/Users/jeanvaljean/.m2/repository/org/apache/maven/shared/maven-shared-utils/0.7/maven-shared-utils-0.7.jar [ERROR] urls[15] = file:/Users/jeanvaljean/.m2/repository/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar [ERROR] urls[16] = file:/Users/jeanvaljean/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.20/plexus-utils-3.0.20.jar [ERROR] urls[17] = file:/Users/jeanvaljean/.m2/repository/org/codehaus/plexus/plexus-archiver/2.9/plexus-archiver-2.9.jar [ERROR] urls[18] = file:/Users/jeanvaljean/.m2/repository/org/codehaus/plexus/plexus-io/2.4/plexus-io-2.4.jar [ERROR] urls[19] = file:/Users/jeanvaljean/.m2/repository/commons-io/commons-io/2.2/commons-io-2.2.jar [ERROR] urls[20] = file:/Users/jeanvaljean/.m2/repository/org/apache/commons/commons-compress/1.9/commons-compress-1.9.jar [ERROR] Number of foreign imports: 1 [ERROR] import: Entry[import from realm ClassRealm[maven.api, parent: null]] [ERROR]
Any hint on how to solve this?
I'm using Maven 3.3.9.
mvn -version
outputs:Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47+01:00) Maven home: /Users/jeanvaljean/Applications/maven/apache-maven-3.3.9 Java version: 9, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home Default locale: en_IT, platform encoding: UTF-8 OS name: "mac os x", version: "10.12.3", arch: "x86_64", family: "mac"
The module that is failing is actually the first child module of the parent pom. It is surprisingly empty:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.7.RELEASE</version> </parent> <groupId>my.group</groupId> <artifactId>my-parent</artifactId> <version>0.1.0-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>test-utils</module> <module>commons</module> <module>validation</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>9</java.version> <tomcat.version>8.5.5</tomcat.version> <unit-tests.skip>true</unit-tests.skip> <integration-tests.skip>true</integration-tests.skip> <!-- PLUGINS --> <maven-compiler-plugin>3.6.2</maven-compiler-plugin> <maven-surefire-plugin>2.20.1</maven-surefire-plugin> <nexus-staging-maven-plugin>1.6.8</nexus-staging-maven-plugin> <maven-source-plugin>3.0.1</maven-source-plugin> <maven-javadoc-plugin>3.0.0-M1</maven-javadoc-plugin> <maven-gpg-plugin>1.6</maven-gpg-plugin> <versions-maven-plugin>2.4</versions-maven-plugin> <maven-scm-plugin>1.9.5</maven-scm-plugin> </properties> <prerequisites> <maven>3.0.4</maven> </prerequisites> <dependencies> <!-- SPRING BOOT --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.2</version> <configuration> <source>9</source> <target>9</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <excludes> <exclude>**/*AcceptanceTest.java</exclude> <exclude>**/*IT.java</exclude> </excludes> </configuration> <executions> <execution> <id>integration-test</id> <goals> <goal>test</goal> </goals> <phase>integration-test</phase> <configuration> <excludes> <exclude>none</exclude> </excludes> <includes> <include>**/*IT.java</include> </includes> </configuration> </execution> <execution> <id>acceptance-test</id> <goals> <goal>test</goal> </goals> <phase>verify</phase> <configuration> <excludes> <exclude>none</exclude> </excludes> <includes> <include>**/*AcceptanceTest.java</include> </includes> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.7.5.201505241946</version> <executions> <execution> <id>default-prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>default-check</id> <phase>prepare-package</phase> <goals> <goal>report</goal> <goal>check</goal> </goals> <configuration> <rules> <rule> <element>CLASS</element> <excludes> <!--<exclude>it.ozimov</exclude>--> </excludes> <limits> <limit> <counter>BRANCH</counter> <value>COVEREDRATIO</value> <minimum>0</minimum> </limit> <limit> <counter>LINE</counter> <value>COVEREDRATIO</value> <minimum>0</minimum> </limit> </limits> </rule> </rules> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <version>2.3</version> <configuration> <generateBackupPoms>false</generateBackupPoms> </configuration> </plugin> <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> </plugins> </build> </project>
-
JeanValjean over 6 years@nullpointer I have copy pasted the output for
mvn -version
. I will add the pom soon. Thanks
-
-
JeanValjean over 6 yearsSo, I upgraded all the plugins. I have another failure now (
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test
), so I consider this issue solved. -
Naman over 6 years@JeanValjean Possibly a test issue this time.
-
JeanValjean over 6 yearsI disabled the plugin for now. I'd like to see the app running. I have another issue related to a JOOQ plugin. I'll create another question. Thanks for the help
-
Danilo Teodoro over 4 yearsA similar error also happened to me when upgrading a project from JDK 11 to 13. Updating the
maven-assembly-plugin
to the latest version (from 2.6 to 3.2.0 in this case) fixed the issue as well.