치명적 오류 컴파일 : 유효하지 않은 대상 릴리스 : 1.8-> [도움말 1]


170

잘못된 대상 릴리스 : 1.7 에 게시 된 것과 비슷한 문제가 있지만 블로그를 따른 후에도 여전히 문제가 해결되지 않습니다.

hm_app 프로젝트에서 목표 org.apache.maven.plugins : maven-compiler-plugin : 3.1 : compile (기본 컴파일)을 실행하지 못했습니다 : 치명적 오류 컴파일 : 잘못된 대상 릴리스 : 1.8-> [도움말 1]

이 문제에 직면했을 때 튜토리얼 로 따르고있었습니다 .

abt java & mvn

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME%
C:\mvn>echo %MAVEN_HOME% yields

출력

C:\Program Files\Java\jdk1.7.0_51
C:\Program Files\Java\jre7
C:\apache-maven-3.0.4

3
... 어딘가에 Java 8이 설치되어 있습니까?
Makoto

나는 x86, 64 자바 7과 자바 8이 없다
rvd

3
괜찮아. 그렇다면 왜 Java 8 컴파일러없이 Java 8 코드를 컴파일하려고합니까?
Makoto

자바 8을 설치하는 내 문제를 조사해 주셔서 @Makoto ty 해결했습니다 .... ty man :)
rvd

@Makoto 마지막으로 나는 "좋아. 왜 Java 8 컴파일러없이 Java 8 코드를 컴파일하려고합니까?" 그래서 난 그냥> 내 pom.xml 파일의 java.version 변경 1.8 </java.version>에 java.version> 1.7 </java.version> 그리고 난 MVN 너무 java7에 컴파일 사용할 수 있습니다
RVD

답변:


281

%JAVA_HOMEjdk 1.7로 설정 했지만 1.8을 사용하여 컴파일하려고합니다. jdk 1.8을 설치 %JAVA_HOME하고 그것을 가리 키거나 대상 릴리스를 1.7로 떨어 뜨려 놓으십시오.

유효하지 않은 대상 릴리스 : 1.8

대상 릴리스는 jdk 버전을 나타냅니다.


7
내 경우에 하나 더 가능한 해결책은 pom.xml 파일 java.version> 1.8 </java.version> to java.version> 1.7 </java.version>로 편집하는 것입니다.
rvd

1
바로 maven이 Java 버전을 찾는 곳입니다. 따라서 효과적으로 Java 버전을 % JAVA_HOME에 설치 한 버전으로 변경했습니다.
Zavior

2
내 Mac에서는 JAVA_HOME = /usr/libexec/java_home -v 1.8을 내보내 JAVA_HOME 을 1.8 JDK의 적절한 위치로 설정합니다. 1.8 대신 원하는 버전을 제공하십시오. (= 이후와 8 이후에 백틱이 있습니다).
bruce szalwinski

네, 맞습니다. 어제 1.7 만 지원하는 다른 레거시 프로그램을 컴파일하도록 변경했습니다. : D 감사합니다!
Davut Gürbüz

31

플러그인에 값을 넣으십시오.

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

오류는 사용되었습니다 :

<source>${java.version}</source>
<target>${java.version}</target>

2
내 경우에는,이 솔루션은 1.7 소스 및 대상 모두를 설정하는 것입니다
thinkhy

어떤 파일에서 이것을 찾을 수 있습니까?
Yusril Maulidan Raji

21

필자의 경우 maven "Run configuration"에서 잘못된 JRE (1.7)를 사용하고있었습니다. 있는지 확인하는 실행 -> 실행 구성 -> (탭) JRE는 일부 jdk1.8.x. 할 수


JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan

13

JDK가 1.7을 가리키고 JRE가 1.8을 가리키면서 문제가 해결되었습니다. 명령 프롬프트에서 입력을 확인하십시오.

java -version

javac -version.

둘 다 같아야합니다.  


5

이클립스에서 내 문제를 해결하는 방법은 다음과 같습니다.

  1. 환경 설정-> 컴파일러-> 컴파일러 불만 자 레벨 (1.8로 변경) 여기에 이미지 설명을 입력하십시오

  2. 종속성-> 설치된 JRE-> JAVA SE 8 1.8을 선택하십시오. 여기에 이미지 설명을 입력하십시오

  3. Run as maven build를 사용하여 maven을 통해 다시 빌드하십시오.

더 이상 유효하지 않은 대상 오류를 표시하지 않아야합니다.
참고 : 터미널에서 다른 변수를 설정하거나 변경할 필요가 없었습니다. 도움이 되었기를 바랍니다.


2

그것을 .profile에 넣으면 동적으로 $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home)

나중에 껍질을 닫고 새 것을 열고 테스트하십시오

echo $JAVA_HOME

다음과 같이 표시되어야합니다.

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

그렇지 않은 경우 시작 스크립트에서 다른 JAVA_HOME 할당을 제거하십시오. 이러한 시작 스크립트는로 시작 .하므로 *와일드 카드를 사용할 때는 숨겨져 포함되지 않습니다 . 예를 들어 홈 디렉토리의 모든 파일을 grep하려는 경우 다음을 수행해야합니다.

grep -s JAVA_HOME ~/.* --exclude=.bash_history

1

내가 직면 한 문제는 명령 프롬프트에서 maven 빌드를 만들 수 있었지만 Eclipse에서는 불가능하다는 것입니다. 이클립스에서 저에게 효과가 있었던 것은 JDK 내부의 JRE 폴더를 가리 키도록 실행 구성을 변경했다는 것입니다. 표준에 따라 JDK 폴더.이 솔루션은 당신에게도 효과가 있지만 모든 java 경로가 정확하고 java와 javac가 pom.xml의 대상에있는 것과 동일한 버전을 표시하는 경우에만 시도하십시오.


이것은 내 문제와 해결책이었습니다.
Skychan

1

Dokku에 배포 할 때이 문제에 직면했습니다. 어떤 이유로 JDK 1.7을 선택했습니다.

만들기 system.properties파일 및 설정이 java.runtime.version=1.8문제를 해결했다. Dokku는 이제 Java 버전 8을 사용합니다 . Heroku에서 JDK 선택

나는 전에 그것을 할 필요가 없었습니다 ...


힌트는 여전히 작동합니다. Dokku의 Java 버전을 11로 변경하기 위해 많은 것을 검색해야했습니다. 대단히 감사합니다.
Mister Vanderbilt

1

Camila Macedo에서 언급했듯이 컴파일러 플러그인의 Java 버전을 명시 적으로 가리켜 야합니다. 스프링 부트의 경우 다음 속성으로 할 수 있습니다.

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>

예, maven.compiler.releaseMaven 프로젝트에서 설정을 수정했습니다.
Cortex

1

IntelliJ를 사용하여 다른 (더 높은) JDK 버전을 설치해야했습니다. IDE를 다시 시작한 후 모든 것이 작동하고 모든 종속성이 해결되었습니다.


1
intelliJ를 다시 시작하는 것이 저의 열쇠였습니다. 다른 Java 버전을 가리 키도록 JAVA_HOME의 환경 변수를 업데이트했지만 기존 CMD 세션에서 시스템 변수가 새로 고쳐지지 않습니다. 아마도 새로운 터미널 세션을 만드는 것으로 충분할 것입니다.
Ubeogesh

0

이 질문은 Docker에 대해 명시 적으로 묻지 않았지만 1.9를 대상으로하는 pom.xml 파일이있을 때 동일한 오류가 발생했습니다 ...

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.9</maven.compiler.source>
  <maven.compiler.target>1.9</maven.compiler.target>
</properties>

...하지만 "maven"자체를 지정하여 Docker 컨테이너에 대해 테스트를 시도했습니다.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test

나를 위해 수정은 내가 필요한 정확한 버전을 대상으로하는 것이 었습니다.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test

( 자세한 내용은 여기를 참조하십시오 .)


0

Windows 시스템에서 일시적으로 Java 버전을 설정할 수 있습니다.
예를 들어, 버전을 Java 8로 변경하려면 다음에서이 명령을 실행하십시오 cmd.

set JAVA_HOME=C:\\...\jdk1.8.0_65

0

호환되는 1.8 Jar 버전을 가져온 강제 Maven 업데이트를 수행 한 다음 실행 환경의 JRE 버전을 실행 구성에서 1.8로 업데이트하고 RUN을 누르십시오.


0

Eclipse IDE를 사용하는 경우 창 메뉴에서 환경 설정을 선택하고 설치된 JRE를 검색하고 프로젝트를 빌드해야하는 JRE를 선택하십시오.


-4

내 경우에 효과가 있었던 것은 다음과 같습니다.

pom.xml아래와 같이 플러그인을 열고 플러그인 중 하나를 교체했습니다.

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

소스 태그와 대상 태그를 모두 편집하기 전에로 1.8변경 1.7하고 작동했습니다.


당신이 한 변화를 이해 했습니까? 아니면 최선을 다해 변화를 바랐습니까?
Popeye

양자 모두. 프로젝트가 이제 Java 1.7 버전에서 실행되고 있음을 이해합니다. 나는 그것이 효과가 있기를 바랐습니다.
VIJAYKUMAR REDDY ALAVALA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.