【问题标题】:Why do I get compilation error with the fault message "invalid target release 1.17" with Maven?为什么使用 Maven 时会出现编译错误并显示错误消息“invalid target release 1.17”?
【发布时间】:2022-01-15 13:35:29
【问题描述】:

下面我将详细描述我遇到的问题。我知道 Stackoverflow 中还有其他线程,但我的问题尚未解决,因此我测试了大部分建议。

说明 我使用 Spring REST 接口(参见下面的代码)制作了一个程序,但我在使用 Maven 编译代码时遇到了问题(参见问题部分)。使用我的 IDE Eclipse 编译代码没有问题。

问题 当我在 Windows 的命令行中使用 Maven 编译代码时: mvn clean compile 我收到错误消息: 错误:无效的目标版本:1.17。 Maven 和 Java 拥有最新版本和环境。变量 JAVA_HOME 设置为正确的 Java 安装路径: C:>回显%JAVA_HOME% C:\Program Files\Java\jdk-17.0.1

C:>java -版本 java版本“17.0.1”2021-10-19 LTS Java(TM) SE 运行时环境 (build 17.0.1+12-LTS-39) Java HotSpot(TM) 64 位服务器 VM(内部版本 17.0.1+12-LTS-39,混合模式,共享)

C:>mvn -version 阿帕奇 Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537) Maven 主页:C:\tobbe\apache-maven-3.8.4 Java 版本:17.0.1,供应商:Oracle Corporation,运行时:C:\Program Files\Java\jdk-17.0.1 默认语言环境:sv_SE,平台编码:Cp1252 操作系统名称:“windows 10”,版本:“10.0”,arch:“amd64”,家族:“windows”

我尝试了几个不同版本的 Java 和 Maven,但都出现了同样的错误。我已经减少了 POM 中的源/目标,当版本在 11-17 之间时,我得到了同样的错误,并且更低的版本给出了源代码编译错误,因为可能版本太低了。

这是我的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://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>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>tobbe</groupId>
    <artifactId>stocks-rest</artifactId>
    <packaging>jar</packaging>
    <version>1.0.1-SNAPSHOT</version>
    <properties>
        <java.version>17</java.version>
        <maven.compiler.source>1.17</maven.compiler.source>
        <maven.compiler.target>1.17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
    <dependency>
        <groupId>tobbe</groupId>
        <artifactId>Stocks_Backend</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
        </plugins>
    </build>

</project>

还有我的代码:

/**
 * Version 1.0.2
 */
package Rest;

import java.awt.AWTException;
import java.awt.HeadlessException;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import java.lang.instrument.IllegalClassFormatException;
import java.net.MalformedURLException;
import java.util.List;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import Enums.Market;
import Enums.REA_Stock_State;
import Enums.Stock_State;
import REA.REAMain;
import REA.REAStock;
import Stocks.Logger;
import mExceptions.ElementSizeException;

@SpringBootApplication
@RestController
public class StocksRestApi 
{
    private Logger iLogger = null; 
    
    public StocksRestApi()
    {
        iLogger = new Logger();   
    }
    
    public static void main(String[] args) 
    {
        SpringApplication.run(StocksRestApi.class, args);
    }
    
    @GetMapping(value="/logdata")
    public String logdata() 
    {
        List<String> dataLogList = iLogger.getLogData();
        String dataLog = "";
        
        if(dataLogList.size() == 0)
        {
            dataLog = "Run http://localhost:8080/rea first"; 
        }
        
        for(String row: dataLogList)
        {
            dataLog += row;  
        }
        
        return dataLog; 
    }
}

问题 为什么我在使用 Maven 编译代码时会得到无效的目标版本 1.17?

【问题讨论】:

  • 我建议使用&lt;maven.compiler.release&gt;17&lt;/maven.compiler.release&gt;... 问题是使用17 而不是1.17 自JDK9 以来已更改...如答案中所述...
  • 更正版本会导致我在 Eclipse 中没有得到的源代码的编译错误:/C:/tobbe/eclipse/student-services/src/main/java/Rest/StocksRestApi.java: [28,19] 包 mExceptions 不存在 [ERROR] /C:/tobbe/eclipse/student-services/src/main/java/Rest/StocksRestApi.java:[83,91] 找不到符号 [ERROR] 符号: class ElementSizeException [ERROR] 位置:class Rest.StocksRestApi 其中:import mExceptions.ElementSizeException;和公共字符串 rea() 抛出 ElementSizeException
  • Eclipse中配置了哪个JDK版本?其次,如果这是一个看起来像这样的 Spring Boot 应用程序,则使用 maven-assembly-plugin 是错误的。为此使用 spring-boot-maven-plugin..
  • Eclipse 中也选择了 1.17,我现在没有安装其他 Java JDK。我有插件汇编器,因为我想从 Maven 创建一个可执行的 jar。由于导入失败,我仍然无法编译项目。缺少的类在 m2 的 jar 中,所以我不明白为什么编译失败(在 Eclipse 中工作)。这是一个自己的异常,在导入时失败:。
  • 包异常;公共类 ElementSizeException 扩展异常 { public ElementSizeException(String aErrorMsg) { super(aErrorMsg); } }

标签: java maven


【解决方案1】:

因为没有 Java 1.17 版本。他们不再将1 放在版本号前面。这很令人困惑。所以他们停止了Java 9(另见JEP223)。使用

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

【讨论】:

    猜你喜欢
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 2011-01-28
    • 2011-07-10
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多