不能 运行 JDK7 上的 Maven 3.6.3
Can't run Maven 3.6.3 on JDK7
根据 the Maven release history,应该可以 运行 在 JDK 7 上 运行 任何最新版本的 Maven(无论如何在撰写本文时)。但是,当我尝试在我的 Ubuntu 21.04 机器上这样做,我得到一个错误: java.lang.UnsupportedClassVersionError: com/google/inject/Module : Unsupported major.minor version 52.0
.
即使 运行 宁 mvn
在不包含任何 Java 文件或 pom.xml
文件的目录中没有任何参数时也会发生。
Maven 信息:
└─❯ mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 1.7.0_80, vendor: Oracle Corporation, runtime: /home/jqno/.jabba/jdk/1.7.80-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.11.0-16-generic", arch: "amd64", family: "unix"
(我还安装了 Zulu 1.7.292 和 OpenJDK;行为相同。)
完整堆栈跟踪:
└─❯ mvn clean
---------------------------------------------------
constituent[0]: file:/usr/share/maven/conf/logging/
constituent[1]: file:/usr/share/maven/lib/commons-lang3.jar
constituent[2]: file:/usr/share/maven/lib/sisu-plexus.jar
constituent[3]: file:/usr/share/maven/lib/maven-core-3.x.jar
constituent[4]: file:/usr/share/maven/lib/maven-shared-utils.jar
constituent[5]: file:/usr/share/maven/lib/sisu-inject.jar
constituent[6]: file:/usr/share/maven/lib/jansi.jar
constituent[7]: file:/usr/share/maven/lib/plexus-component-annotations.jar
constituent[8]: file:/usr/share/maven/lib/plexus-interpolation.jar
constituent[9]: file:/usr/share/maven/lib/maven-settings-builder-3.x.jar
constituent[10]: file:/usr/share/maven/lib/aopalliance.jar
constituent[11]: file:/usr/share/maven/lib/wagon-provider-api.jar
constituent[12]: file:/usr/share/maven/lib/jsr250-api.jar
constituent[13]: file:/usr/share/maven/lib/slf4j-api.jar
constituent[14]: file:/usr/share/maven/lib/plexus-cipher.jar
constituent[15]: file:/usr/share/maven/lib/maven-slf4j-provider-3.x.jar
constituent[16]: file:/usr/share/maven/lib/maven-resolver-transport-wagon.jar
constituent[17]: file:/usr/share/maven/lib/wagon-file.jar
constituent[18]: file:/usr/share/maven/lib/plexus-sec-dispatcher.jar
constituent[19]: file:/usr/share/maven/lib/maven-resolver-provider-3.x.jar
constituent[20]: file:/usr/share/maven/lib/jcl-over-slf4j.jar
constituent[21]: file:/usr/share/maven/lib/wagon-http-shaded.jar
constituent[22]: file:/usr/share/maven/lib/maven-compat-3.x.jar
constituent[23]: file:/usr/share/maven/lib/guice-no-aop.jar
constituent[24]: file:/usr/share/maven/lib/maven-artifact-3.x.jar
constituent[25]: file:/usr/share/maven/lib/guava.jar
constituent[26]: file:/usr/share/maven/lib/maven-resolver-connector-basic.jar
constituent[27]: file:/usr/share/maven/lib/commons-cli.jar
constituent[28]: file:/usr/share/maven/lib/maven-builder-support-3.x.jar
constituent[29]: file:/usr/share/maven/lib/maven-resolver-api.jar
constituent[30]: file:/usr/share/maven/lib/plexus-utils.jar
constituent[31]: file:/usr/share/maven/lib/maven-settings-3.x.jar
constituent[32]: file:/usr/share/maven/lib/maven-resolver-util.jar
constituent[33]: file:/usr/share/maven/lib/maven-resolver-impl.jar
constituent[34]: file:/usr/share/maven/lib/cdi-api.jar
constituent[35]: file:/usr/share/maven/lib/maven-resolver-spi.jar
constituent[36]: file:/usr/share/maven/lib/maven-embedder-3.x.jar
constituent[37]: file:/usr/share/maven/lib/maven-repository-metadata-3.x.jar
constituent[38]: file:/usr/share/maven/lib/commons-io.jar
constituent[39]: file:/usr/share/maven/lib/maven-model-builder-3.x.jar
constituent[40]: file:/usr/share/maven/lib/maven-plugin-api-3.x.jar
constituent[41]: file:/usr/share/maven/lib/maven-model-3.x.jar
constituent[42]: file:/usr/share/maven/lib/javax.inject.jar
---------------------------------------------------
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/google/inject/Module : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access0(URLClassLoader.java:71)
at java.net.URLClassLoader.run(URLClassLoader.java:361)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:425)
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
at org.apache.maven.cli.MavenCli.container(MavenCli.java:636)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:282)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
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: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)
看起来好像在某处,Maven 尝试加载为 JDK8 编译的 class,因为它抱怨 52.0 的 class 版本不受支持。但是我找不到哪个 class,或者为什么 Maven 会首先尝试加载它。我在 Google 上找到的所有内容似乎都不相关。
这是怎么回事?我该如何解决这个问题?
更新
我已经解压了 /usr/share/maven/lib/guice-no-aop.jar
文件和 运行 javap -verbose com.google.inject.Module
,它确实有 52.0 版本。我不知道该文件是如何到达那里的(我假设它是由 apt install maven
安装的,但我不确定)。
这里的问题是 Ubuntu 重新打包了 Maven,结果产生了这个问题。
如此处所示,如果您通过以下方式检查版本:
mvn --version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 1.7.0_80, vendor: Oracle Corporation, runtime: /home/jqno/.jabba/jdk/1.7.80-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.11.0-16-generic", arch: "amd64", family: "unix"
这表明您没有使用 Apache Maven。
如果您在普通命令行上执行此操作并通过 https://maven.apache.org/download.cgi 安装 Apache Maven,您将得到如下输出:
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/XXX/tools/maven
Java version: 1.7.0_302, vendor: Azul Systems, Inc., runtime: /Users/khmarbaise/.sdkman/candidates/java/7.0.302-zulu/zulu-7.jdk/Contents/Home/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"
最重要的部分是第一行:
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
这是 Apache Maven。
其次,如果您仔细查看错误输出:
constituent[0]: file:/usr/share/maven/conf/logging/
constituent[1]: file:/usr/share/maven/lib/commons-lang3.jar
constituent[2]: file:/usr/share/maven/lib/sisu-plexus.jar
constituent[3]: file:/usr/share/maven/lib/maven-core-3.x.jar
constituent[4]: file:/usr/share/maven/lib/maven-shared-utils.jar
constituent[5]: file:/usr/share/maven/lib/sisu-inject.jar
constituent[6]: file:/usr/share/maven/lib/jansi.jar
constituent[7]: file:/usr/share/maven/lib/plexus-component-annotations.jar
constituent[8]: file:/usr/share/maven/lib/plexus-interpolation.jar
constituent[9]: file:/usr/share/maven/lib/maven-settings-builder-3.x.jar
constituent[10]: file:/usr/share/maven/lib/aopalliance.jar
constituent[11]: file:/usr/share/maven/lib/wagon-provider-api.jar
constituent[12]: file:/usr/share/maven/lib/jsr250-api.jar
constituent[13]: file:/usr/share/maven/lib/slf4j-api.jar
constituent[14]: file:/usr/share/maven/lib/plexus-cipher.jar
constituent[15]: file:/usr/share/maven/lib/maven-slf4j-provider-3.x.jar
constituent[16]: file:/usr/share/maven/lib/maven-resolver-transport-wagon.jar
constituent[17]: file:/usr/share/maven/lib/wagon-file.jar
constituent[18]: file:/usr/share/maven/lib/plexus-sec-dispatcher.jar
constituent[19]: file:/usr/share/maven/lib/maven-resolver-provider-3.x.jar
constituent[20]: file:/usr/share/maven/lib/jcl-over-slf4j.jar
constituent[21]: file:/usr/share/maven/lib/wagon-http-shaded.jar
constituent[22]: file:/usr/share/maven/lib/maven-compat-3.x.jar
constituent[23]: file:/usr/share/maven/lib/guice-no-aop.jar
constituent[24]: file:/usr/share/maven/lib/maven-artifact-3.x.jar
constituent[25]: file:/usr/share/maven/lib/guava.jar
constituent[26]: file:/usr/share/maven/lib/maven-resolver-connector-basic.jar
constituent[27]: file:/usr/share/maven/lib/commons-cli.jar
constituent[28]: file:/usr/share/maven/lib/maven-builder-support-3.x.jar
constituent[29]: file:/usr/share/maven/lib/maven-resolver-api.jar
constituent[30]: file:/usr/share/maven/lib/plexus-utils.jar
constituent[31]: file:/usr/share/maven/lib/maven-settings-3.x.jar
constituent[32]: file:/usr/share/maven/lib/maven-resolver-util.jar
constituent[33]: file:/usr/share/maven/lib/maven-resolver-impl.jar
constituent[34]: file:/usr/share/maven/lib/cdi-api.jar
constituent[35]: file:/usr/share/maven/lib/maven-resolver-spi.jar
constituent[36]: file:/usr/share/maven/lib/maven-embedder-3.x.jar
constituent[37]: file:/usr/share/maven/lib/maven-repository-metadata-3.x.jar
constituent[38]: file:/usr/share/maven/lib/commons-io.jar
constituent[39]: file:/usr/share/maven/lib/maven-model-builder-3.x.jar
constituent[40]: file:/usr/share/maven/lib/maven-plugin-api-3.x.jar
constituent[41]: file:/usr/share/maven/lib/maven-model-3.x.jar
constituent[42]: file:/usr/share/maven/lib/javax.inject.jar
你会看到这样的东西:
constituent[3]: file:/usr/share/maven/lib/maven-core-3.x.jar
..
constituent[25]: file:/usr/share/maven/lib/guice-no-aop.jar
如果您查看原始文件 Apache Maven lib directory,文件如下所示:
javaee (master *)$ ls -la ~/tools/apache-maven-3.6.3/lib/
total 21000
drwxr-xr-x 65 khmarbaise staff 2080 Nov 7 2019 .
drwxr-xr-x 9 khmarbaise staff 288 Nov 21 2019 ..
-rw-r--r-- 1 khmarbaise staff 44908 Nov 7 2019 cdi-api-1.0.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 cdi-api.license
-rw-r--r-- 1 khmarbaise staff 53820 Nov 7 2019 commons-cli-1.4.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 commons-cli.license
-rw-r--r-- 1 khmarbaise staff 208700 Nov 7 2019 commons-io-2.5.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 commons-io.license
-rw-r--r-- 1 khmarbaise staff 501879 Nov 7 2019 commons-lang3-3.8.1.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 commons-lang3.license
drwxr-xr-x 3 khmarbaise staff 96 Nov 7 2019 ext
-rw-r--r-- 1 khmarbaise staff 2591373 Nov 7 2019 guava-25.1-android.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 guava.license
-rw-r--r-- 1 khmarbaise staff 520662 Nov 7 2019 guice-4.2.1-no_aop.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 guice.license
-rw-r--r-- 1 khmarbaise staff 283858 Nov 7 2019 jansi-1.17.1.jar
drwxr-xr-x 10 khmarbaise staff 320 Nov 7 2019 jansi-native
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 jansi.license
-rw-r--r-- 1 khmarbaise staff 2497 Nov 7 2019 javax.inject-1.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 javax.inject.license
-rw-r--r-- 1 khmarbaise staff 16539 Nov 7 2019 jcl-over-slf4j-1.7.29.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 jcl-over-slf4j.license
-rw-r--r-- 1 khmarbaise staff 397115 Nov 7 2019 jsoup-1.12.1.jar
-rw-r--r-- 1 khmarbaise staff 1192 Nov 7 2019 jsoup.license
-rw-r--r-- 1 khmarbaise staff 5848 Nov 7 2019 jsr250-api-1.0.jar
-rw-r--r-- 1 khmarbaise staff 20545 Nov 7 2019 jsr250-api.license
-rw-r--r-- 1 khmarbaise staff 57824 Nov 7 2019 maven-artifact-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 14262 Nov 7 2019 maven-builder-support-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 287955 Nov 7 2019 maven-compat-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 633028 Nov 7 2019 maven-core-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 98096 Nov 7 2019 maven-embedder-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 215412 Nov 7 2019 maven-model-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 192302 Nov 7 2019 maven-model-builder-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 47035 Nov 7 2019 maven-plugin-api-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 27158 Nov 7 2019 maven-repository-metadata-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 148983 Nov 7 2019 maven-resolver-api-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 44143 Nov 7 2019 maven-resolver-connector-basic-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 180696 Nov 7 2019 maven-resolver-impl-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 66242 Nov 7 2019 maven-resolver-provider-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 36732 Nov 7 2019 maven-resolver-spi-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 31013 Nov 7 2019 maven-resolver-transport-wagon-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 167529 Nov 7 2019 maven-resolver-util-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 44047 Nov 7 2019 maven-settings-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 42090 Nov 7 2019 maven-settings-builder-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 166562 Nov 7 2019 maven-shared-utils-3.2.1.jar
-rw-r--r-- 1 khmarbaise staff 23815 Nov 7 2019 maven-slf4j-provider-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 379197 Nov 7 2019 org.eclipse.sisu.inject-0.3.4.jar
-rw-r--r-- 1 khmarbaise staff 11530 Nov 7 2019 org.eclipse.sisu.inject.license
-rw-r--r-- 1 khmarbaise staff 205323 Nov 7 2019 org.eclipse.sisu.plexus-0.3.4.jar
-rw-r--r-- 1 khmarbaise staff 11530 Nov 7 2019 org.eclipse.sisu.plexus.license
-rw-r--r-- 1 khmarbaise staff 13350 Nov 7 2019 plexus-cipher-1.7.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 plexus-cipher.license
-rw-r--r-- 1 khmarbaise staff 4225 Nov 7 2019 plexus-component-annotations-2.1.0.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 plexus-component-annotations.license
-rw-r--r-- 1 khmarbaise staff 85327 Nov 7 2019 plexus-interpolation-1.25.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 plexus-interpolation.license
-rw-r--r-- 1 khmarbaise staff 27703 Nov 7 2019 plexus-sec-dispatcher-1.4.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 plexus-sec-dispatcher.license
-rw-r--r-- 1 khmarbaise staff 261801 Nov 7 2019 plexus-utils-3.2.1.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 plexus-utils.license
-rw-r--r-- 1 khmarbaise staff 41424 Nov 7 2019 slf4j-api-1.7.29.jar
-rw-r--r-- 1 khmarbaise staff 1224 Nov 7 2019 slf4j-api.license
-rw-r--r-- 1 khmarbaise staff 11586 Nov 7 2019 wagon-file-3.3.4.jar
-rw-r--r-- 1 khmarbaise staff 2206349 Nov 7 2019 wagon-http-3.3.4-shaded.jar
-rw-r--r-- 1 khmarbaise staff 55776 Nov 7 2019 wagon-provider-api-3.3.4.jar
所有类似 maven-core..
等的文件都包含 Maven (3.6.3) 的版本号,也有问题
-rw-r--r-- 1 khmarbaise staff 2591373 Nov 7 2019 guava-25.1-android.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 guava.license
-rw-r--r-- 1 khmarbaise staff 520662 Nov 7 2019 guice-4.2.1-no_aop.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 guice.license
您会发现这与给定的输出特别不同,其中只有 file:/usr/share/maven/lib/guice-4.2.1-no_aop.jar
除了缺少其他工件的版本号。
这意味着问题是基于 Ubuntu Maven 的使用和 NOT 使用与 JDK 7 兼容的 Apache Maven,其中重新打包Ubuntu 的版本根本就不是。
最简单的解决方案是删除 Maven 的 ubuntu 包并安装原始的 Apache Maven https://maven.apache.org/download.cgi 然后 JDK 7 的构建将起作用。 (下载并检查校验和等)
您还可以下载 Apache Maven 并根据您的发行版检查文件的校验和 (/usr/share/maven/lib/
) 我敢打赌所有文件都是不同的。
这个问题是基于发行版重新打包应用程序(例如 Maven)及其系统上的依赖项的想法,这实际上意味着您有不同版本的依赖项,这会导致此类问题。
根据 the Maven release history,应该可以 运行 在 JDK 7 上 运行 任何最新版本的 Maven(无论如何在撰写本文时)。但是,当我尝试在我的 Ubuntu 21.04 机器上这样做,我得到一个错误: java.lang.UnsupportedClassVersionError: com/google/inject/Module : Unsupported major.minor version 52.0
.
即使 运行 宁 mvn
在不包含任何 Java 文件或 pom.xml
文件的目录中没有任何参数时也会发生。
Maven 信息:
└─❯ mvn -version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 1.7.0_80, vendor: Oracle Corporation, runtime: /home/jqno/.jabba/jdk/1.7.80-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.11.0-16-generic", arch: "amd64", family: "unix"
(我还安装了 Zulu 1.7.292 和 OpenJDK;行为相同。)
完整堆栈跟踪:
└─❯ mvn clean
---------------------------------------------------
constituent[0]: file:/usr/share/maven/conf/logging/
constituent[1]: file:/usr/share/maven/lib/commons-lang3.jar
constituent[2]: file:/usr/share/maven/lib/sisu-plexus.jar
constituent[3]: file:/usr/share/maven/lib/maven-core-3.x.jar
constituent[4]: file:/usr/share/maven/lib/maven-shared-utils.jar
constituent[5]: file:/usr/share/maven/lib/sisu-inject.jar
constituent[6]: file:/usr/share/maven/lib/jansi.jar
constituent[7]: file:/usr/share/maven/lib/plexus-component-annotations.jar
constituent[8]: file:/usr/share/maven/lib/plexus-interpolation.jar
constituent[9]: file:/usr/share/maven/lib/maven-settings-builder-3.x.jar
constituent[10]: file:/usr/share/maven/lib/aopalliance.jar
constituent[11]: file:/usr/share/maven/lib/wagon-provider-api.jar
constituent[12]: file:/usr/share/maven/lib/jsr250-api.jar
constituent[13]: file:/usr/share/maven/lib/slf4j-api.jar
constituent[14]: file:/usr/share/maven/lib/plexus-cipher.jar
constituent[15]: file:/usr/share/maven/lib/maven-slf4j-provider-3.x.jar
constituent[16]: file:/usr/share/maven/lib/maven-resolver-transport-wagon.jar
constituent[17]: file:/usr/share/maven/lib/wagon-file.jar
constituent[18]: file:/usr/share/maven/lib/plexus-sec-dispatcher.jar
constituent[19]: file:/usr/share/maven/lib/maven-resolver-provider-3.x.jar
constituent[20]: file:/usr/share/maven/lib/jcl-over-slf4j.jar
constituent[21]: file:/usr/share/maven/lib/wagon-http-shaded.jar
constituent[22]: file:/usr/share/maven/lib/maven-compat-3.x.jar
constituent[23]: file:/usr/share/maven/lib/guice-no-aop.jar
constituent[24]: file:/usr/share/maven/lib/maven-artifact-3.x.jar
constituent[25]: file:/usr/share/maven/lib/guava.jar
constituent[26]: file:/usr/share/maven/lib/maven-resolver-connector-basic.jar
constituent[27]: file:/usr/share/maven/lib/commons-cli.jar
constituent[28]: file:/usr/share/maven/lib/maven-builder-support-3.x.jar
constituent[29]: file:/usr/share/maven/lib/maven-resolver-api.jar
constituent[30]: file:/usr/share/maven/lib/plexus-utils.jar
constituent[31]: file:/usr/share/maven/lib/maven-settings-3.x.jar
constituent[32]: file:/usr/share/maven/lib/maven-resolver-util.jar
constituent[33]: file:/usr/share/maven/lib/maven-resolver-impl.jar
constituent[34]: file:/usr/share/maven/lib/cdi-api.jar
constituent[35]: file:/usr/share/maven/lib/maven-resolver-spi.jar
constituent[36]: file:/usr/share/maven/lib/maven-embedder-3.x.jar
constituent[37]: file:/usr/share/maven/lib/maven-repository-metadata-3.x.jar
constituent[38]: file:/usr/share/maven/lib/commons-io.jar
constituent[39]: file:/usr/share/maven/lib/maven-model-builder-3.x.jar
constituent[40]: file:/usr/share/maven/lib/maven-plugin-api-3.x.jar
constituent[41]: file:/usr/share/maven/lib/maven-model-3.x.jar
constituent[42]: file:/usr/share/maven/lib/javax.inject.jar
---------------------------------------------------
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/google/inject/Module : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access0(URLClassLoader.java:71)
at java.net.URLClassLoader.run(URLClassLoader.java:361)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:425)
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
at org.apache.maven.cli.MavenCli.container(MavenCli.java:636)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:282)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
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: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)
看起来好像在某处,Maven 尝试加载为 JDK8 编译的 class,因为它抱怨 52.0 的 class 版本不受支持。但是我找不到哪个 class,或者为什么 Maven 会首先尝试加载它。我在 Google 上找到的所有内容似乎都不相关。
这是怎么回事?我该如何解决这个问题?
更新
我已经解压了 /usr/share/maven/lib/guice-no-aop.jar
文件和 运行 javap -verbose com.google.inject.Module
,它确实有 52.0 版本。我不知道该文件是如何到达那里的(我假设它是由 apt install maven
安装的,但我不确定)。
这里的问题是 Ubuntu 重新打包了 Maven,结果产生了这个问题。
如此处所示,如果您通过以下方式检查版本:
mvn --version
Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 1.7.0_80, vendor: Oracle Corporation, runtime: /home/jqno/.jabba/jdk/1.7.80-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.11.0-16-generic", arch: "amd64", family: "unix"
这表明您没有使用 Apache Maven。
如果您在普通命令行上执行此操作并通过 https://maven.apache.org/download.cgi 安装 Apache Maven,您将得到如下输出:
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /Users/XXX/tools/maven
Java version: 1.7.0_302, vendor: Azul Systems, Inc., runtime: /Users/khmarbaise/.sdkman/candidates/java/7.0.302-zulu/zulu-7.jdk/Contents/Home/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.6", arch: "x86_64", family: "mac"
最重要的部分是第一行:
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
这是 Apache Maven。
其次,如果您仔细查看错误输出:
constituent[0]: file:/usr/share/maven/conf/logging/
constituent[1]: file:/usr/share/maven/lib/commons-lang3.jar
constituent[2]: file:/usr/share/maven/lib/sisu-plexus.jar
constituent[3]: file:/usr/share/maven/lib/maven-core-3.x.jar
constituent[4]: file:/usr/share/maven/lib/maven-shared-utils.jar
constituent[5]: file:/usr/share/maven/lib/sisu-inject.jar
constituent[6]: file:/usr/share/maven/lib/jansi.jar
constituent[7]: file:/usr/share/maven/lib/plexus-component-annotations.jar
constituent[8]: file:/usr/share/maven/lib/plexus-interpolation.jar
constituent[9]: file:/usr/share/maven/lib/maven-settings-builder-3.x.jar
constituent[10]: file:/usr/share/maven/lib/aopalliance.jar
constituent[11]: file:/usr/share/maven/lib/wagon-provider-api.jar
constituent[12]: file:/usr/share/maven/lib/jsr250-api.jar
constituent[13]: file:/usr/share/maven/lib/slf4j-api.jar
constituent[14]: file:/usr/share/maven/lib/plexus-cipher.jar
constituent[15]: file:/usr/share/maven/lib/maven-slf4j-provider-3.x.jar
constituent[16]: file:/usr/share/maven/lib/maven-resolver-transport-wagon.jar
constituent[17]: file:/usr/share/maven/lib/wagon-file.jar
constituent[18]: file:/usr/share/maven/lib/plexus-sec-dispatcher.jar
constituent[19]: file:/usr/share/maven/lib/maven-resolver-provider-3.x.jar
constituent[20]: file:/usr/share/maven/lib/jcl-over-slf4j.jar
constituent[21]: file:/usr/share/maven/lib/wagon-http-shaded.jar
constituent[22]: file:/usr/share/maven/lib/maven-compat-3.x.jar
constituent[23]: file:/usr/share/maven/lib/guice-no-aop.jar
constituent[24]: file:/usr/share/maven/lib/maven-artifact-3.x.jar
constituent[25]: file:/usr/share/maven/lib/guava.jar
constituent[26]: file:/usr/share/maven/lib/maven-resolver-connector-basic.jar
constituent[27]: file:/usr/share/maven/lib/commons-cli.jar
constituent[28]: file:/usr/share/maven/lib/maven-builder-support-3.x.jar
constituent[29]: file:/usr/share/maven/lib/maven-resolver-api.jar
constituent[30]: file:/usr/share/maven/lib/plexus-utils.jar
constituent[31]: file:/usr/share/maven/lib/maven-settings-3.x.jar
constituent[32]: file:/usr/share/maven/lib/maven-resolver-util.jar
constituent[33]: file:/usr/share/maven/lib/maven-resolver-impl.jar
constituent[34]: file:/usr/share/maven/lib/cdi-api.jar
constituent[35]: file:/usr/share/maven/lib/maven-resolver-spi.jar
constituent[36]: file:/usr/share/maven/lib/maven-embedder-3.x.jar
constituent[37]: file:/usr/share/maven/lib/maven-repository-metadata-3.x.jar
constituent[38]: file:/usr/share/maven/lib/commons-io.jar
constituent[39]: file:/usr/share/maven/lib/maven-model-builder-3.x.jar
constituent[40]: file:/usr/share/maven/lib/maven-plugin-api-3.x.jar
constituent[41]: file:/usr/share/maven/lib/maven-model-3.x.jar
constituent[42]: file:/usr/share/maven/lib/javax.inject.jar
你会看到这样的东西:
constituent[3]: file:/usr/share/maven/lib/maven-core-3.x.jar
..
constituent[25]: file:/usr/share/maven/lib/guice-no-aop.jar
如果您查看原始文件 Apache Maven lib directory,文件如下所示:
javaee (master *)$ ls -la ~/tools/apache-maven-3.6.3/lib/
total 21000
drwxr-xr-x 65 khmarbaise staff 2080 Nov 7 2019 .
drwxr-xr-x 9 khmarbaise staff 288 Nov 21 2019 ..
-rw-r--r-- 1 khmarbaise staff 44908 Nov 7 2019 cdi-api-1.0.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 cdi-api.license
-rw-r--r-- 1 khmarbaise staff 53820 Nov 7 2019 commons-cli-1.4.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 commons-cli.license
-rw-r--r-- 1 khmarbaise staff 208700 Nov 7 2019 commons-io-2.5.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 commons-io.license
-rw-r--r-- 1 khmarbaise staff 501879 Nov 7 2019 commons-lang3-3.8.1.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 commons-lang3.license
drwxr-xr-x 3 khmarbaise staff 96 Nov 7 2019 ext
-rw-r--r-- 1 khmarbaise staff 2591373 Nov 7 2019 guava-25.1-android.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 guava.license
-rw-r--r-- 1 khmarbaise staff 520662 Nov 7 2019 guice-4.2.1-no_aop.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 guice.license
-rw-r--r-- 1 khmarbaise staff 283858 Nov 7 2019 jansi-1.17.1.jar
drwxr-xr-x 10 khmarbaise staff 320 Nov 7 2019 jansi-native
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 jansi.license
-rw-r--r-- 1 khmarbaise staff 2497 Nov 7 2019 javax.inject-1.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 javax.inject.license
-rw-r--r-- 1 khmarbaise staff 16539 Nov 7 2019 jcl-over-slf4j-1.7.29.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 jcl-over-slf4j.license
-rw-r--r-- 1 khmarbaise staff 397115 Nov 7 2019 jsoup-1.12.1.jar
-rw-r--r-- 1 khmarbaise staff 1192 Nov 7 2019 jsoup.license
-rw-r--r-- 1 khmarbaise staff 5848 Nov 7 2019 jsr250-api-1.0.jar
-rw-r--r-- 1 khmarbaise staff 20545 Nov 7 2019 jsr250-api.license
-rw-r--r-- 1 khmarbaise staff 57824 Nov 7 2019 maven-artifact-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 14262 Nov 7 2019 maven-builder-support-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 287955 Nov 7 2019 maven-compat-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 633028 Nov 7 2019 maven-core-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 98096 Nov 7 2019 maven-embedder-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 215412 Nov 7 2019 maven-model-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 192302 Nov 7 2019 maven-model-builder-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 47035 Nov 7 2019 maven-plugin-api-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 27158 Nov 7 2019 maven-repository-metadata-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 148983 Nov 7 2019 maven-resolver-api-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 44143 Nov 7 2019 maven-resolver-connector-basic-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 180696 Nov 7 2019 maven-resolver-impl-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 66242 Nov 7 2019 maven-resolver-provider-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 36732 Nov 7 2019 maven-resolver-spi-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 31013 Nov 7 2019 maven-resolver-transport-wagon-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 167529 Nov 7 2019 maven-resolver-util-1.4.1.jar
-rw-r--r-- 1 khmarbaise staff 44047 Nov 7 2019 maven-settings-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 42090 Nov 7 2019 maven-settings-builder-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 166562 Nov 7 2019 maven-shared-utils-3.2.1.jar
-rw-r--r-- 1 khmarbaise staff 23815 Nov 7 2019 maven-slf4j-provider-3.6.3.jar
-rw-r--r-- 1 khmarbaise staff 379197 Nov 7 2019 org.eclipse.sisu.inject-0.3.4.jar
-rw-r--r-- 1 khmarbaise staff 11530 Nov 7 2019 org.eclipse.sisu.inject.license
-rw-r--r-- 1 khmarbaise staff 205323 Nov 7 2019 org.eclipse.sisu.plexus-0.3.4.jar
-rw-r--r-- 1 khmarbaise staff 11530 Nov 7 2019 org.eclipse.sisu.plexus.license
-rw-r--r-- 1 khmarbaise staff 13350 Nov 7 2019 plexus-cipher-1.7.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 plexus-cipher.license
-rw-r--r-- 1 khmarbaise staff 4225 Nov 7 2019 plexus-component-annotations-2.1.0.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 plexus-component-annotations.license
-rw-r--r-- 1 khmarbaise staff 85327 Nov 7 2019 plexus-interpolation-1.25.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 plexus-interpolation.license
-rw-r--r-- 1 khmarbaise staff 27703 Nov 7 2019 plexus-sec-dispatcher-1.4.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 plexus-sec-dispatcher.license
-rw-r--r-- 1 khmarbaise staff 261801 Nov 7 2019 plexus-utils-3.2.1.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 plexus-utils.license
-rw-r--r-- 1 khmarbaise staff 41424 Nov 7 2019 slf4j-api-1.7.29.jar
-rw-r--r-- 1 khmarbaise staff 1224 Nov 7 2019 slf4j-api.license
-rw-r--r-- 1 khmarbaise staff 11586 Nov 7 2019 wagon-file-3.3.4.jar
-rw-r--r-- 1 khmarbaise staff 2206349 Nov 7 2019 wagon-http-3.3.4-shaded.jar
-rw-r--r-- 1 khmarbaise staff 55776 Nov 7 2019 wagon-provider-api-3.3.4.jar
所有类似 maven-core..
等的文件都包含 Maven (3.6.3) 的版本号,也有问题
-rw-r--r-- 1 khmarbaise staff 2591373 Nov 7 2019 guava-25.1-android.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 guava.license
-rw-r--r-- 1 khmarbaise staff 520662 Nov 7 2019 guice-4.2.1-no_aop.jar
-rw-r--r-- 1 khmarbaise staff 11560 Nov 7 2019 guice.license
您会发现这与给定的输出特别不同,其中只有 file:/usr/share/maven/lib/guice-4.2.1-no_aop.jar
除了缺少其他工件的版本号。
这意味着问题是基于 Ubuntu Maven 的使用和 NOT 使用与 JDK 7 兼容的 Apache Maven,其中重新打包Ubuntu 的版本根本就不是。
最简单的解决方案是删除 Maven 的 ubuntu 包并安装原始的 Apache Maven https://maven.apache.org/download.cgi 然后 JDK 7 的构建将起作用。 (下载并检查校验和等)
您还可以下载 Apache Maven 并根据您的发行版检查文件的校验和 (/usr/share/maven/lib/
) 我敢打赌所有文件都是不同的。
这个问题是基于发行版重新打包应用程序(例如 Maven)及其系统上的依赖项的想法,这实际上意味着您有不同版本的依赖项,这会导致此类问题。