programing

스프링 부트:치명적인 오류 컴파일: 잘못된 대상 릴리스: 17

cafebook 2023. 7. 7. 21:07
반응형

스프링 부트:치명적인 오류 컴파일: 잘못된 대상 릴리스: 17

스프링 부트 튜토리얼만 진행하고 4.4.4 단계 실행 중$ mvn spring-boot:run

오류는 다음과 같습니다.

$ mvn spring-boot:run
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------< com.example:myproject >------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] >>> spring-boot-maven-plugin:3.0.0-SNAPSHOT:run (default-cli) > test-compile @ myproject >>>
[INFO] 
[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ myproject ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] skip non existing resourceDirectory /Users/dnatochy/development/springboot/testapp1/src/main/resources
[INFO] skip non existing resourceDirectory /Users/dnatochy/development/springboot/testapp1/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.10.1:compile (default-compile) @ myproject ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/dnatochy/development/springboot/testapp1/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.078 s
[INFO] Finished at: 2022-07-26T21:27:48-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project myproject: Fatal error compiling: invalid target release: 17 -> [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

구글에서 이 오류와 유사한 내용을 찾을 수 있는 모든 것은 메이븐에서 사용하는 자바 버전의 불일치를 가리키지만, 그렇지 않습니다.

$ java -version
java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)

$ javac -version
javac 1.8.0_333

$ mvn -v
Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
Maven home: /Users/myuser/tools/apache-maven-3.8.6
Java version: 1.8.0_333, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_333.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "12.4", arch: "x86_64", family: "mac"

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_333.jdk/Contents/Home

JAVA_HOME에서 어떤 Java 버전이 구성되어 있는지 확인해야 합니다.사용:mvn -version당신은 이것과 같은 것을 봐야 합니다.mvn산출량

$ mvn -version
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: path\apache-maven-3.8.5
Java version: 17.0.3.1, vendor: Oracle Corporation, runtime: path\Java\jdk-17.0.3.1
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

또한 이 게시물을 따라 더 많은 솔루션을 확인할 수 있습니다.https://mkyong.com/maven/maven-error-invalid-target-release-17/

pom.xml로 돌아가서 Java 버전을 에서 찾을 수 있는 버전으로 변경합니다.mvn -v.

Maven이 대상과 동일하거나 최신 버전의 JAVA를 사용하고 있는지 확인합니다.

  • JAVA_HOME을 설치한 최신 Java로 업데이트합니다.
  • VSCode를 사용하는 경우에도 이전 터미널 닫기
  • 를 열고 실행합니다.mvn -version명령. "runtime:"이 새 JAVA 경로를 가리키는지 확인합니다.

저의 경우, 이 문제는 제 컴퓨터에 있는 Java 버전이 낮았기 때문입니다.저는 자바 17에 있었고 자바 18로 업데이트를 했고 저를 위해 같은 설정을 했습니다.

@1615903이 지적했듯이 저는 자바 17이 필요했습니다.설치 후 컴파일 오류가 발생하기 시작했습니다.

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /Users/myuser/development/springboot/testapp1/src/main/java/MyApplication.java:[1,2] cannot find symbol
  symbol: class RestController
[ERROR] /Users/myuser/development/springboot/testapp1/src/main/java/MyApplication.java:[2,2] cannot find symbol
  symbol: class EnableAutoConfiguration
[ERROR] /Users/myuser/development/springboot/testapp1/src/main/java/MyApplication.java:[5,10] cannot find symbol
  symbol:   class RequestMapping
  location: class MyApplication
[ERROR] /Users/myuser/development/springboot/testapp1/src/main/java/MyApplication.java:[11,17] cannot find symbol
  symbol:   variable SpringApplication

MyApplication.java에 가져오기 문을 추가한 후 앱이 컴파일되어 실행되었습니다.

import org.springframework.web.bind.annotation.RestController;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.web.bind.annotation.RequestMapping;

maven-delay-delay의 <target> 및 <configuration>에서 <source>에서 17을 설정할 수 있습니다.

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

OR

<속성>의 maven-discovery-source(및 대상)에 17을 설정합니다.

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

그런 다음 JAVA_HOME에서 jdk 17을 설정해야 합니다(mvn -v 명령으로 확인할 수 있습니다).

참고: (예를 들어) jdk-11을 사용하여 낮은 Java 버전으로 프로젝트를 컴파일할 수 있지만 Java 11을 사용하여 프로젝트를 컴파일하려면 jdk-11 이상을 설정해야 합니다.

제가 한 일은 다음과 같습니다.

  1. 명령어를 사용하여 Java 17 홈을 찾았습니다./usr/libexec/java_home

결과:

/Library/Java/Java 가상 시스템/temurin-17.jdk/콘텐츠/홈

  1. 확인된 mvn 파일:vi ~/.mavenrc JAVA_HOME을 위의 17로 바꿉니다.

참고: 프로젝트를 만드는 동안 대부분의 경우 메이븐 버전과 자바 버전을 확인하지 않고 기본적으로 프로젝트를 만듭니다.

1단계: 시스템 cmd -> java --version에서 실행 중인 java 버전을 확인합니다.

2단계: POX.xml 파일의 Java 버전을 Java 8인 경우에 맞게 변경합니다.

    <java.version>1.8</java.version>    

언급URL : https://stackoverflow.com/questions/73132312/spring-boot-fatal-error-compiling-invalid-target-release-17

반응형