当前位置: 首页 > 知识库问答 >
问题:

为什么Maven会出现编译错误,错误消息为“invalid target release 1.17”?

乜裕
2023-03-14

下面我描述更多关于我的问题。我知道Stackoverflow中还有其他线程,但我的问题尚未解决,因此我测试了大多数建议。

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

在Windows:mvn clean compile的命令行中使用Maven编译代码时出现问题:我收到错误消息:错误:目标版本无效:1.17。Maven和Java拥有最新版本和env。Variable JAVA_HOME设置为正确的JAVA安装路径:C:

C:

C:

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

这是我的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无效?

共有2个答案

狄珂
2023-03-14

因为没有Java1.17版本。他们不再把1放在版本号前面。这令人困惑。因此,他们停止使用Java9(另请参见JEP223)。使用

<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
张博涛
2023-03-14

使用

    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
 类似资料:
  • 错误:第 1 行的解析错误:函数搜索(sour ^ 期望“字符串”、“数字”、“空”、“真”、“假”、“{”、“[”,得到“未定义” 代码:

  • 我走过以下opendaylight指南:https://docs.opendaylight.org/en/stable-oxygen/developer-guide/developing-apps-on-the-opendaylight-controller.html# 编译过程中出现错误: Odl测试提供者。爪哇: 编译器信息: 目标:maven编译器插件:3.7.0:compile(默认编译)

  • 问题内容: 我正在尝试使用Ant脚本和Java编译JasperReports模板。我收到此错误: 模板中没有什么复杂的东西,但是我仍然无法编译。 问题答案: 您必须将模板中的值设置为Java。有两种方法可以执行此操作: 如果使用的是 iReport,请 在 “报告检查器”中 选择根对象(与报告名称相同的根对象)。然后在“ 属性” 窗口中,从“ 语言” 下拉列表中选择“ Java ” 。 __ 如果

  • 我实现了以下REST调用: 也是一个提供和使用application/x-protobuf的提供者类: 我的pom。xml看起来像: 我的小部件。原型: 选项java_package=“example”;选项java\u outer\u classname=“WidgetsProtoc”; 对于http://localhost:8080/RESTfulExample/widgets我得到以下错误消

  • 问题内容: 我已经阅读了 为什么在尝试在数据库中加载Blob时会出现java.lang.AbstractMethodError?,下载了我能找到的所有11g jdbc驱动程序,并将它们作为库和/或jar文件添加到了我的NetBeans应用程序中。我仍然不断收到相同的AbstractMethodError,这让我很生气!任何指导将不胜感激! 错误信息: 问题答案: 问题的原因是软件不兼容(jar文件