45

我无法使用带有最新版本的 maven-compiler-plugin 的 Java 11 进行构建。

pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>11</release>
            </configuration>
        </plugin>
    <plugins>
<build>

当我尝试使用 Maven 构建时:

➜  mvn clean compile
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Building service 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ service ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 80 source files to /home/mip/service/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.859 s
[INFO] Finished at: 2018-08-01T11:20:55+01:00
[INFO] Final Memory: 32M/124M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project service: Fatal error compiling: release version 11 not supported -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

这是我正在使用的 Maven 和 Java 版本:

➜  mvn -version
Apache Maven 3.5.2
Maven home: /usr/share/maven
Java version: 10.0.1, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "4.15.0-29-generic", arch: "amd64", family:     "unix"
➜  /usr/lib/jvm/java-11-openjdk-amd64/bin/java -version
openjdk version "10.0.1" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)

Java 11 将自己标识为“10.0.1”是否会导致问题?如果我将我的 pom.xml 修改为,<release>10</release>那么即使我没有安装 Java 10,它也可以毫无问题地构建。

➜  ~ /usr/lib/jvm/java-11-openjdk-amd64/bin/javac -version
javac 10.0.1 

➜ javac --release 11 SomeClass.java
javac: release version 11 not 
supported Usage: javac <options> <source files>
use --help for a list of possible options

我认为这是 Ubuntuopenjdk-11-jdk软件包的问题:

➜  ~ sudo apt install openjdk-11-jdk
Reading package lists... Done
Building dependency tree       
Reading state information... Done
openjdk-11-jdk is already the newest version (10.0.1+10-3ubuntu1).
0 to upgrade, 0 to newly install, 0 to remove and 2 not to upgrade.
4

9 回答 9

39

mvn 需要JAVA_HOME设置。我遇到了同样的问题,设置JAVA_HOME正确的 JDK 就可以了。

于 2018-10-06T03:54:05.930 回答
7

我在 docker 容器中构建 java 项目时遇到了这个错误。它一定与 maven 的安装方式有关,因为当我将容器基于官方 maven 映像时它就消失了。

特别是,这意味着在我的 Dockerfile 中使用以下内容:

FROM maven:3.6.3-jdk-11-slim

经过进一步调查,关键的区别是我有包裹java-11-openjdk,但我需要java-11-openjdk-devel

于 2019-12-27T21:15:55.730 回答
5

我看到您正在使用 Java 9,要使用 Java 11 构建,请尝试以下操作:

  1. 确保 JAVA_HOME 设置为 C:\Program Files\Java\jdk-11......

  2. 在您的 pom.xml 中添加"<properties> <java.version>11</java.version> </properties>"并引用 ${java.version} (如果适用)。

  3. “mvn -v”应该输出类似这样的内容(取决于您的 maven 和 java 安装在您的机器中的位置): Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T21:00:29+02:00) Maven home: C :\Program Files (x86)\Apache-Maven-3.6.1\bin.. Java 版本:11.0.6,供应商:Oracle Corporation,运行时:C:\Program Files\Java\jdk-11.0.6 默认语言环境:en_US ,平台编码:cp1252 操作系统名称:“windows 10”,版本:“10.0”,arch:“amd64”,family:“windows”

  4. 然后重试 mvn clean install

  5. 如果运气不好,请分享您的 pom.xml,以便我们查看可能导致您的构建失败的配置。

于 2020-05-09T23:04:36.800 回答
4

对我来说,这是因为安装了 Java 11 JRE 而不是 JDK。文件夹名称中有“jdk”,所以我认为它是正确的,但是在/bin文件夹中我没有​​看到javac可执行文件,所以我认为它回退到系统上的默认 Java,它早于 Java 11 .

于 2019-03-29T22:40:58.023 回答
3

我在centOS 7中遇到了类似的问题。

Fatal error compiling: error: release version 11 not supported

我有 jre 但缺少 jdk。你可以通过运行javac命令来解决这个问题。是说找不到命令,然后需要安装jdk。

安装 Java 11 JDK

sudo yum install java-11-openjdk-devel

安装 Java 11 JRE

sudo yum install java-11-openjdk

更多细节在这里。我发现这很有用。

https://phoenixnap.com/kb/install-java-on-centos

于 2020-10-09T09:40:12.820 回答
1

我在使用 Docker 镜像时遇到了这个错误adoptopenjdk/openjdk13:alpine-slimThe JDK "slim" image does not support the "--release" flag in the javac command

于 2020-02-05T10:26:22.510 回答
1

在终端:

mvn-版本

示例 - Java 版本:9.0.4

进一步使用的插件:

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>9.0.4</release>
</configuration>
</plugin>
</plugins>
于 2019-05-14T09:14:39.757 回答
0

对我来说,一个看似相似的错误,特别是java.lang.AssertionError

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project nospringboot: Fatal error compiling: java.lang.AssertionError: Version '14' not supported -> [Help 1] 

由于依赖项之一而发生。我已经换了

<groupId>org.testifyproject.mock</groupId>
<artifactId>mockito</artifactId>
<version>1.0.6</version>

<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>

它正在工作。当我以详细模式运行 maven build并打印以下输出时,我意识到了这一点:

Caused by: java.lang.AssertionError: Version '14' not supported
    at org.testifyproject.processor.DiscoverableProcessor.getSupportedSourceVersion(DiscoverableProcessor.java:67)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.checkSourceVersionCompatibility(JavacProcessingEnvironment.java:764)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.<init>(JavacProcessingEnvironment.java:704)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next(JavacProcessingEnvironment.java:830)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:926)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1270)
...

它显示了哪个方法(在哪个特定包org.testifyproject.processor.DiscoverableProcessor.getSupportedSourceVersion(DiscoverableProcessor.java:67:)产生了否定断言。

于 2020-12-19T11:46:04.433 回答
0

正如消息所指出的,这是一个版本问题,我启动了一个 spring 项目,当我的电脑上实际安装了 java 8 时,我选择了 java 11。我只是去 bach 用适当的 java 版本重新创建我的项目,错误就消失了

于 2021-03-17T11:43:36.643 回答