【问题标题】:Maven: Invalid target release: 10Maven:无效的目标版本:10
【发布时间】:2018-12-30 07:16:06
【问题描述】:

我正在尝试使用Java 10 编译我的maven 项目,但我遇到了麻烦。在我的 IDE (IntelliJ IDEA) 中,所有东西都可以在Java 10 下编译和运行。我安装了最新的maven 版本3.5.4 并将我的JAVA_HOME 指向JDK 10

$ mvn --version
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T20:33:14+02:00)
Maven home: C:\Maven\bin\..
Java version: 10.0.2, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-10.0.2
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

我使用的maven 命令是:

mvn package -Dmaven.test.skip

在我的pom.xml 中,Java 8 的以下内容运行良好:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <libraries.directory>libraries</libraries.directory>
</properties>

对于Java 10,我将其更改为以下内容:

<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>

这不起作用,就像使用1.10作为源和目标编译器的版本一样。

完整的调试日志输出(-X 命令行开关)如下:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project My-Project: Fatal error compiling: invalid target release: 1.10 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project My-Project: Fatal error compiling
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Fatal error compiling
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:1086)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:168)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.codehaus.plexus.compiler.CompilerException: invalid target release: 1.10
    at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess (JavaxToolsCompiler.java:173)
    at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile (JavacCompiler.java:174)
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:1075)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:168)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    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.IllegalArgumentException: invalid target release: 1.10
    at com.sun.tools.javac.main.OptionHelper$GrumpyHelper.error (OptionHelper.java:103)
    at com.sun.tools.javac.main.Option$12.process (Option.java:216)
    at com.sun.tools.javac.api.JavacTool.processOptions (JavacTool.java:217)
    at com.sun.tools.javac.api.JavacTool.getTask (JavacTool.java:156)
    at com.sun.tools.javac.api.JavacTool.getTask (JavacTool.java:107)
    at com.sun.tools.javac.api.JavacTool.getTask (JavacTool.java:64)
    at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess (JavaxToolsCompiler.java:125)
    at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile (JavacCompiler.java:174)
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:1075)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:168)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[ERROR]
[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

this 答案中建议的那样添加maven-compiler-plugin 也不起作用:

Fatal error compiling: invalid flag: --release -> [Help 1]

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 这已在 maven-compiler-plugin 版本 3.7.1 中修复。见issues.apache.org/jira/browse/MCOMPILER-332
  • @rodrigoap 有趣但 maven Central 还没有版本 3.7.1,所以找不到:mvnrepository.com/artifact/org.apache.maven.plugins/…
  • 当您使用 -X 运行时,您会看到 Using compiler 'javac'. 吗?对于 Command line options:,它会显示什么?
  • 指定错误版本时日志读取失败。确保&lt;release&gt;10&lt;release&gt; 而不是1.10。与 10 共享日志,以查看实际失败的原因。
  • @BullyWiiPlaza mvnrepository 不是 Central。可以在这里找到:search.maven.org

标签: java maven pom.xml java-10


【解决方案1】:

通过将 JAVA_HOME 环境变量设置为指向具有正确版本的 JDK,为我解决了同样的问题。

我在 maven-compiler-plugin 中的源和目标 java 版本是 11,java -version 也是版本 11,但我的 JAVA_HOME 指向 JDK-1.8。

使用终端而不是 IDE 再次检查 JAVA_HOME:

Linux:
echo $JAVA_HOME

Win:
echo %JAVA_HOME%

然后在同一个终端中构建你的项目:

mvn clean package

【讨论】:

  • 这对我也有用。转到 Windows 上的环境变量,然后转到系统变量并使用 Java JDK 路径编辑 PATH 变量
【解决方案2】:

这对我有用:

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

这个answer 说你需要:

<dependencies>
    <dependency>
        <groupId>org.ow2.asm</groupId>
        <artifactId>asm</artifactId>
        <version>6.2</version> <!-- Use newer version of ASM -->
    </dependency>
</dependencies>

&lt;plugin/&gt; 标签内,但较新的 mvn (3.5.4) 必须避免这一点,因为我不需要它。

【讨论】:

  • 不管添加与否,我仍然得到Fatal error compiling: invalid flag: --release -&gt; [Help 1]javac -help--release &lt;release&gt; Compile for a specific VM version. Supported targets: 10, 6, 7, 8, 9
  • 简单的事情是你应该使用&lt;maven.compiler.release&gt;9&lt;/maven.compiler.release&gt;而不是&lt;maven.compiler.source&gt;..&lt;/maven.compiler.sources&gt;&lt;maven.compiler.target&gt;..&lt;/maven.compiler.target&gt;从JDK 9开始因为JDK 8确实有一个--release 选项...
  • maven-compiler-plugin=3.7.0 + release=10 就像一个魅力。
  • 也可能需要更改JAVA_HOMEstackoverflow.com/a/52139841/2568885
  • 对于从 1.6 到 1.10 的 java 版本:1.x 很好。但是对于 11,它应该是“11”而不是“1.11”。
【解决方案3】:

通过运行 java -version 获取您的 java 版本。

你会得到如下输出:

java version "1.8.0_201"

现在转到您的 POM 文件并使用您安装的 java 版本更新 maven-compiler-plugin 的源和目标属性。就我而言,它是 1.8

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <configuration>
      <source>1.8</source>
      <target>1.8</target>
   </configuration>
</plugin>

【讨论】:

  • 关于检查已安装的Java 版本的好提示,但问题是关于使用Java 10 而不是将其恢复为8
【解决方案4】:

我在使用 spring boot 和 java 11 时遇到了类似的问题。 我通过在我的 pom 中定义以下属性来解决它

<maven.compiler.release>11</maven.compiler.release>

将来可能对某人有用。

【讨论】:

  • 添加 &lt;maven.compiler.release&gt;11&lt;/maven.compiler.release&gt; 作为属性或添加 &lt;release&gt;11&lt;/release&gt; 作为配置到 maven-compiler-plugin 给出完全相同的结果。 release的插件文档
  • 还要确保使用mvn --version 至少运行 Maven: 3.6.0,它至少在 Java 9 下使用。旧版本没有“--release”选项。
  • 这个标签maven.compiler.release 替换了maven.compiler.sourcemaven.compiler.target 标签。使用 release 标记时,注释掉源和目标行(如果存在)。
【解决方案5】:

这意味着您正在使用尚未安装的 java.version 10。

<properties>
    <java.version>10</java.version>
</properties>

【讨论】:

    【解决方案6】:

    当您使用 Intellij 时,您需要按照以下步骤操作 (这里我使用的是 Java 11,但同样适用于 Java 10 和其他版本)-

    1. 将项目结构下的 SDK 更改为 Java 11

    1. 更改项目结构下模块的语言级别(如果需要)

    1. 在设置中更改 runner 下的 JRE

    1. 在设置中的 Java 编译器下更改目标字节码版本

    1. 在支持 Java 11 的设置中检查 Maven 下的 maven 版本

    2. 在你的pom中,提到版本如下,你可以忽略这里的编码标签

    1. 在构建项目之前最后确认您的运行配置

    1. 如果您使用的是 Windows 机器,则相应地更改环境变量 JAVA_HOME、Path 和 MAVEN_HOME。

    【讨论】:

      【解决方案7】:

      检查您的 JAVA_HOME 版本。您在 JAVA_HOME 和 POM 中的 java 版本似乎不同。通过在 Windows 环境变量中编辑来正确设置 JAVA_HOME 路径。

      【讨论】:

        【解决方案8】:

        有时它只是您的 java 版本。例如,当项目使用 Java 10 但您的 Java 路径设置为 8 等时,请尝试运行 java -version 并确保它与您的项目相同。如果没有,请修复它并重试。

        【讨论】:

          【解决方案9】:

          感谢上面的回答,你用的是 10,我用的是 11,但我想步骤是相似的。

          对我来说,重点是在我的 pom.xml 中明确指定版本为 java 11,我通过以下步骤解决了这个问题。

          1. 打开终端并输入:java -version,然后我得到 1.8,然后我去 .bash_profile 将 java 版本切换到 11.2,因为我安装了多个 java 版本。请记住“重新启动”您的终端并再次检查您的 java 版本以确认切换成功。

          2. 然后我转到文件 -> 项目结构以确保我的 IntelliJ 使用与我的 env 相同的版本,即 11.2。

          3. 重新启动您的 Intellij,mvn clean install,已解决,希望这可以帮助解决此问题的人,谢谢。

          【讨论】:

            【解决方案10】:

            在“文件>>项目结构>>项目设置>>项目>>项目SDK”中选择你安装的Java版本并点击确定。

            它解决了我的 Maven 问题:

            无效的目标版本:16 .

            【讨论】:

            • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
            猜你喜欢
            • 2021-04-29
            • 2023-03-06
            • 2012-02-18
            • 1970-01-01
            • 2015-10-14
            • 1970-01-01
            • 2013-11-22
            • 2015-12-19
            • 1970-01-01
            相关资源
            最近更新 更多