下面我將詳細描述我遇到的問題。我知道 Stackoverflow 中還有其他執行緒,但我的問題尚未解決,因此我測驗了大部分建議。
描述 我使用 Spring REST 介面(參見下面的代碼)制作程式,但我在使用 Maven 編譯代碼時遇到問題(參見問題部分)。使用我的 IDE Eclipse 編譯代碼沒有問題。
問題 當我在 Windows 的命令列中使用 Maven 編譯代碼時:mvn clean compile 我收到錯誤訊息:錯誤:無效的目標版本:1.17。Maven 和 Java 擁有最新版本和環境。變數 JAVA_HOME 設定為正確的 Java 安裝路徑:C:>echo %JAVA_HOME% C:\Program Files\Java\jdk-17.0.1
C:>java -version java version "17.0.1" 2021-10-19 LTS Java(TM) SE Runtime Environment (build 17.0.1 12-LTS-39) Java HotSpot(TM) 64-Bit Server VM (build 17.0.1 12-LTS-39,混合模式,共享)
C:>mvn -version Apache 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?
uj5u.com熱心網友回復:
因為沒有 Java 1.17 版本。他們不再把1版本號放在前面。這很令人困惑。所以他們停止使用Java 9(另見JEP223)。利用
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
uj5u.com熱心網友回復:
利用
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/413774.html
標籤:
