Maven 빌드 실패 : "Javac 컴파일러를 찾을 수 없음 : jre 또는 jdk 문제"


112

JAVA_HOME을 다음과 같이 설정했습니다.

C:\Program Files (x86)\Java\jdk1.6.0_18

실행 후 Eclipsemaven install 에서 다음 메시지를받습니다 .

이유:

Unable to locate the Javac Compiler in:
  C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

이것이 까다로운 부분이라고 확신합니다

JRE가 아닌 JDK 1.4 이상을 사용하고 있는지 확인하십시오.

구성을 실행하면 JRE6으로 설정됩니다. 이미 설치 한 JDK 1.6으로 변경하려면 어떻게합니까?

플러그인을 수정하려고 시도했습니다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
    </configuration>
</plugin>

그래도 같은 오류가 발생합니다.

Eclipse Maven 플러그인을 사용합니다. Eclipse에서 JRE에서 JDK로 어떻게 변경할 수 있습니까?


setJAVA_HOME이 생각한대로 설정되어 있는지 확인하기 위해 명령 줄 명령을 사용하여 다시 확인 했습니까 ?
Powerlord

나는 매일 자바를 사용하고 있습니다 .. 모든 것이 여기에서 잘 작동합니다 : java -version .6.0_18-ea" time Environment (build 1.6.0_18-ea-b04) ) Client VM (build 16.0-b11, mixed mode, sharing)
Gandalf StormCrow

1
실행 파일을 설정할 때 <fork> true </ fork>를 설정하십시오.
로빈

실제로 어떤 Java 설치 java -version가 실행 중인지 알려주지는 않습니다 . JRE 또는 JDK 설치 일 수 있습니다. javac -version조금 더 유용 할 것입니다. 그러나 PATH가 정확하고 JAVA_HOME이 잘못된 경우에도 예상대로 표시됩니다.
Powerlord 2010

1
또한 실행 파일은 ... \ bin \ javac 여야하며 경로뿐만 아니라 실제 실행 파일을 지정해야합니다.
로빈

답변:


141

다음과 같이 사용중인 JDK Eclipse를 업데이트 할 수 있습니다.

메뉴 환경 설정 ...Java설치된 JRE에서 JRE를 추가하고 설정합니다 .

JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18

그렇지 않은 경우 JAVA_HOME 경로의 대괄호와 공백으로 인해 문제가 발생할 수 있습니다. JDK를 다른 위치에 복사하고 JAVA_HOME을 업데이트하십시오.


1
질문의 첫 번째 부분입니다. JAVA_HOME은 괜찮습니다
Gandalf StormCrow 2010

47
나를 위해 추가 단계가 필요했다 :의 특성에가는이 프로젝트 -> 자바 빌드 경로 생성> libraries-> 선택 "JRE 시스템 라이브러리는"편집을 클릭하고 "작업 공간 기본 JRE"를 선택했다
maayank

1
나에게 충분하지 않았고 eclipse.ini를 편집해야했습니다. 버그가 있다고 생각합니다.
ruhsuzbaykus

실행 환경-> 호환 가능한 JRE에서 적절한 jdk를 확인할 때만 저에게 효과적이었습니다.
Vedran 2012-08-21

9
또한 이러한 구성 변경 전에 생성 한 Eclipse 실행 구성에서 Maven을 실행하는 경우 구성 실행 창 / JRE 탭으로 이동하여 올바른 JRE를 선택하는 것을 잊지 마십시오. 그렇지 않으면 Eclipse 및 프로젝트 설정을 새 것으로 업데이트 한 후에도 이전의 잘못된 JRE를 사용할 수 있습니다.
Diana

20

eclipse.ini 파일 에는 vmJDK 위치를 가리키는 인수가 필요합니다 .

eclipse.ini다음과 같이 JDK 홈을 가리 키도록 파일을 편집하십시오.

-vm
C:\Program Files\Java\jdk1.6.0_06

이렇게하면 Eclipse가 시스템의 기본 JRE가 아닌 JDK에서 실행됩니다.


5
이것은 내 문제를 해결했습니다. 웹에서 조사한 결과 Maven이 JAVA_HOME을 사용하는 것처럼 보이지만 Maven 플러그인은 JAVA_HOME에 대해 아무것도 모르고 대신 Eclipse를 시작하는 데 사용되는 VM을 기본값으로 사용합니다.
jnosek

13

당신은 시도 :

이동 Preferences/Java/Installed JREs하여 위치 "C:\Program Files\Java\jdk1.6.0_27\jre또는 이와 유사한 항목을 추가하십시오.

하나를 제거하십시오. C:\Program Files\Java\jre6

보시다시피 경로 C:\Program Files\Java\jre6\..\lib\tools.jar는 첫 번째 부분 (/ ..까지)이 C:\Program Files\Java\jdk1.6.0_27\jre.


10

fork 를 true로 설정 하면 문제가 해결되었습니다.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>

9

나는 있었다 정확한 같은 문제! 내가 검색하고 일을 찾고 있었다 때문에 대한 모든 지껄 "는 -vm C 넣어 : \ 프로그램 파일 \ 자바 \ jdkxxxxx \ 빈"는 INI AR에서 바로 가기에 대한 인수가 그랬던 것처럼 모든 도움에 있지 !

(내가 답답하게 들리나? 믿어 라, 그건 과소 평가 다! Maven을 신뢰할 수있게 만드는 데 일주일을 잃었 기 때문에 나는 단순히 화가 난다!)

나는 매우 예측할 수없는 행동을했다. 때로는 컴파일되고 때로는 그렇지 않습니다. 내가했다면 maven clean컴파일러를 찾을 수 없어 실패했습니다. 그런 다음 빌드 경로에서 무언가를 변경하면 갑자기 다시 작동합니다 !!

메뉴 환경 설정Java설치된 JRE로 이동할 때까지 . JDK의 위치를 ​​사용하여 새 JRE를 추가 한 다음 JRE를 제거했습니다. 갑자기 Maven이 안정적으로 실행되었습니다!

아파치 매뉴얼에 글꼴 크기가 30 정도 인 글자를 넣을 가치가 있을까요?

존경하는 마음으로 이것은 Java 커뮤니티에 대해 터무니없는 일입니다! 나는 이런 종류의 문제를 해결하기 위해이 모든 사람들이 얼마나 많은 날을 잃었는지 상상할 수 없습니다! 나는 이것이 최종 버전으로 출시되는 것을 상상할 수 없습니다. 나는 개인적으로 베타 소프트웨어 라는 이름으로 그런 것을 공개하지 않을 것입니다 .

어느 쪽이든 상관 없습니다 .... 1 주일의 조작 후 마침내 개발을 시작할 수 있습니다. 상사가 이것에 대해 알지 못하길 바랍니다. 그 에게 .NET을 사용 하지 않도록 설득하는 데 많은 노력이 필요했고 이미 그것에 대해 미안하다고 느낍니다.


1
결론은 이클립스가 아닌 콘솔에서 사용하면 이런 종류의 문제가 발생하지 않을 것입니다. 그것은 제가 몇 달 동안 사용 후 깨달은 것입니다. 이제는 maven에 꽤 편안합니다
Gandalf StormCrow

그것의 더 많은 일식 ... m2e 문제 .. 나는 같은 문제가 있고 다른 IDE (netbeans 및 IDEA)가 완벽하게 작동합니다.
joshua

3

Eclipse에서 Run as-> Maven 설치를 사용하여 동일한 문제가 발생했습니다. JAVA_HOME과 eclipse.ini는 괜찮 았고 내 최신 JDK를 가리 켰습니다. 그러나 m2clipse는 JRE를 사용했습니다. Eclipse 외부에서 mvn install을 사용하면 정상적으로 작동했습니다!

제 경우에는 다음과 같이 문제를 해결했습니다.

  1. Eclipse에서 탐색 : 메뉴 환경 설정Java설치된 JRE
  2. JRE 및 JDK에 대해 두 개의 비활성 항목이 있습니다. 활성 버전은 가장 최근에 설치된 JDK입니다. 모든 항목을 삭제하지만 Maven은 사용해야합니다.

Maven은 어느 것이 활성 상태인지 고려하지 않는다고 생각합니다.



3

난 그냥, 메이븐 3.0.4 설치 설정 M2_HOME, M2그리고 JAVA_HOME그에 따라. 그런 다음 다음 명령을 실행했습니다.

mvn archetype:generate....

mvn compile

다음과 같은 실패한 메시지를 받았습니다 maven unable to locate javac compiler..

내 컴퓨터에서는 기본적으로 C : \ program files \ java \ jre.1.6에 JRE가 설치되어 있습니다. 그리고 나는 다른이 \ 자바 \ JDK1.6 : CJAVA_HOME이로 설정 C를 : \ 자바 \ JDK1.6 .

내 설정에서 잘못된 점을 보지 못했습니다. 검색 후를 살펴보기로 결정하고 모든 단계를 mvn.bat에코 %JAVA_HOME%하고 올바르게 표시 C:\java\jdk1.6되었지만 명령을 실행하면 mvn --versionJava home : C : \ program files \ java \ jre1.1.6이 표시되었습니다 .

마지막으로 -Djava.home=c:\java\jdk1.6아래 명령에서와 같이 설정해야하며 이제 정상적으로 작동 한다는 것을 알았습니다 .

%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Djava.home=%JAVA_HOME%" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

참고 : 이것은 mvnEclipse가 아닌 명령 행용입니다.


이봐, 당신은 항상 당신이 한 각 단계를 설명 할 필요가 없습니다. 요점에 대한 답변 방법을 참조하십시오 .
mtk

그것은 해킹처럼 보이지만 (하지만 헤이 ... 그것이 당신을 위해 작동한다면!) 그러나 maven 명령 줄이 잘못된 자바 홈을 선택한다는 것은 흥미 롭습니다. 이것은 우리의 현재 문제입니다.
plasma147

2

설치된 JRE의 위치를 ​​JDK 자체에있는 디렉토리로 변경하여 문제를 해결했습니다. JAVA_HOME환경 변수 의 적절한 값을 설정해도 문제가 해결되지 않았습니다.

제 경우에는 두 개의 디렉토리가 있습니다.

  • C:\Program Files\Java\jdk1.7.0_03 --> For JDK

  • C:\Program Files\Java\jre7 --> For JRE

처음에는 C:\Program Files\Java\jre7Eclipse에서 JRE 설치로 설정 했고 Maven의 경우 동일한 오류가 발생했습니다 (Ant가 정상적으로 작동했습니다).

C:\Program Files\Java\jdk1.7.0_03\jre7설치된 JRE를 Eclipse에서 설치된 JRE로 변경하면 문제가 해결됩니다.


2

특정 Eclipse 구성에서 프로젝트를 실행하는 경우 올바른 JDK를 추가 한 후 'Run Configurations'-> 'Your maven configuration'-> 'JRE tab'에서 Java 런타임을 변경해야합니다. Eclipse 환경 설정.


2

Maven이 JDK가 아닌 JRE를 사용하는 것처럼 들립니다. JDK를 설치하기 전에 Maven을 설치 하셨나요?

설정 파일을 확인하십시오 . 시스템, 사용자, 프로젝트 총 3 가지가 있습니다. 설치 구성 ($ M2_HOME / conf / settings.xml) 또는 사용자 별 구성 ($ {user.dir} /. m2 / settings.xml)에있을 가능성이 가장 높습니다.


2

Eclipse 설정 만

다음 단계를 수행하십시오.

  1. Eclipse 프로젝트 속성을 마우스 오른쪽 버튼으로 클릭하십시오.

  2. 자바 빌드 경로 → 라이브러리

  3. JRE 시스템 라이브러리 선택 → Edit버튼 클릭

  4. "설치된 JRE ..."버튼을 클릭합니다.

  5. JRE를 다음으로 편집하십시오. JRE Home = JAVA_HOME 또는 JAVA_HOME \ jre 설정

스크린 샷 :

여기에 이미지 설명 입력


이것은 나를 위해 일했습니다. 감사합니다. JRE 홈을 JDK 폴더로 변경했습니다.
LadyBernkastel 2014 년

1

메뉴 프로젝트속성Java 빌드 경로를 마우스 오른쪽 버튼으로 클릭합니다 .

JRE 시스템 경로 → 편집을 선택합니다 . Workspace Default JRE를 선택하고 JDK> 1.4를 가리 킵니다.


1

메뉴 환경 설정Java설치된 JRE실행 환경 -> 오른쪽의 확인란을 클릭하십시오.


1

해결책은 간단합니다. 때때로 Eclipse Windows환경 설정Java설치된 JREC:\Program files\Java\jre.

변경하면 C:\Program files\Java\JDK 6.0\jre100 % 작동합니다.


1

다른 여러 사람이 언급했듯이 Eclipse 환경 설정 ...Java설치된 JREJRE아닌 설치 한 JDK 를 가리켜 야합니다 . 그래야만 오류 메시지에 언급 된 폴더를 찾을 수 있습니다 .../lib

이것으로도 문제가 재발 할 수 있습니다. Eclipse v4.2 (Juno) 에서 나가는 방법 은 MavenUpdate project ... 메뉴를 수행하는 것 입니다. 그 후에 문제가 사라집니다.

그 이유는 Eclipse 생성 파일 (.classpath, .project, .preferences) 중 일부가 이러한 문제가있는 프로젝트의 Subversion에 있기 때문이라고 생각합니다. 따라서 SVN 업데이트로 인해 문제가 발생하고 Eclipse의 Maven에서 구성 업데이트가 다시 해결됩니다.

실제 솔루션 : 버전 제어에서 Eclipse 생성 .files를 생략 하고 Maven Eclipse 플러그인이 프로젝트 구성을 처리하도록합니다. (추가 조언 / 제안을 환영합니다) .


1

제 경우에는 Eclipse 메뉴에서 RunDebug Configurations .

JRE 탭에서 JRE 대신 JDK를 선택하면 문제가 해결되었습니다.


1

Amazon Linux에서 동일한 문제가 발생했습니다. JDK의 개발자 버전을 설치해야했습니다.

sudo yum -y install java-1.7.0-openjdk-devel

1

Eclipse 메뉴로 이동합니다. 환경 설정 ...Java설치된 JREJRE 가 아닌 설치 한 JDK를 가리켜 야합니다.


그러나 이것은 또한 수많은 이전 답변에 있습니다.
Peter Mortensen

0

Eclipse에 업데이트 된 모든 변경 사항이 있는지 확인할 수도 있습니다. 이렇게하려면 프로젝트를 마우스 오른쪽 버튼으로 클릭 한 다음 "새로 고침"메뉴 항목을 누릅니다.


0

다른 많은 답변은 Eclipse가 JRE 대신 JDK를 가리 키도록 지시합니다.

여기에 더 구체적이고 명확한 답변이 있습니다. [여기에있는 어떤 답변에서 본 것보다] 단계별로 수행하는 방법에 대한 단계별 답변 : JDK를 어떻게 설치합니까?

이것이 바로이 문제에 대해 저를 해결 한 것입니다.


0

eclipse.ini의 "-vm"이 두 개의 개별 행에 있는지 확인하십시오.

-vm
C:\Program Files\Java\jdk1.6.0_06

0

JAVA_HOME이 가리키는 JDK 위치 대신 컴파일러 플러그인이 표시된 JRE 위치에 있도록 컴파일러 의 위치가 POM 에 정의되어 있다고 생각합니다 .


@Robin 정확히 어디에서 찾아야합니까? pom은 나에게 괜찮아 보인다<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.6</source> <target>1.6</target>
Gandalf StormCrow 2010

<executable>이 정의되어 있지 않으면보고있는 pom이 정의 된 부모 pom에서 상속되지 않는 한 이것이 문제의 원인이 아닙니다.
Robin

실행 파일을 정의 할 때 <fork>도 true로 설정해야합니다.
Robin

0

(Maven 폴더에 있음) JAVA_HOME에 표시해야하며 문제가 사라집니다.mvn.ini/bin


0

JAVA_HOME을 설정했는데 문제가 지속되면 다음을 시도하십시오.

(새로 설치된 PC에서 동일한 문제가 발생했습니다.)

Eclipse를 사용한다고 가정합니다.

  • 열기 → 환경 설정Java설치된 jre . 거기에있는 모든 것을 제거하고 원하는 것을 추가하십시오 (JDK, JRE 없음!)
  • 동일한 창에서 maven-설치를 열고 어딘가에 다운로드하고 추출한 Maven 설치를 추가하십시오. ( 임베디드 Maven 설치를 사용하지 마십시오 . 알려진 버그가 있습니다.)

그게 다야. 귀하의 프로젝트는 그러한 문제를 겪지 않을 것입니다.


0

JUnit 버전 때문에 같은 오류가 발생했습니다 . 3.8.1이 3 개 있고 4.8.1로 변경되었습니다.

따라서 해결책은 다음과 같습니다.

POM 으로 이동하여 종속성이 다음과 같은지 확인해야합니다.

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>

0

maven-compiler-plugin의 구성을 추가 executable하고 forktrue 값으로 변경했습니다.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
    <executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
</configuration>

그것은 나를 위해 일했습니다.


0

수행 Echo %JAVA_HOME%다음과mvn --version .

JRE의 경로는 다음 메뉴 이동 ... 동일해야 환경 설정자바JRE의 설치 내용과 동일해야 위치를 Java_Home보여주고있다.


0

속성 대화 상자로 이동 하여 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.

에서 링크 된 자원 , JAVA_HOME이라고하고 JDK 위치에 넣어 새로운 경로 ": \ 프로그램 파일 \ 자바 \ jdk1.8.0_73 C"와 같은 무언가를 추가 할 수 있습니다.

그게 다야!!


변수를 추가해야한다고 생각하지 않습니다. Run seetings에서 JDK 구성을 작업 공간 JDK
Phani로

0

이 문제에 대한 해결책은 매우 간단합니다 ...

Ant 빌드 파일 이 없으면 생성하십시오. Eclipse에서는 Ant 파일을 쉽게 만들 수 있습니다 .

Ant 빌드 파일 을 작성하려면 링크를 참조하십시오 [ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse] .

이제 주어진 단계를 따르십시오.

1) 보기 창에있는 Ant보기에 Ant 빌드 파일을 추가하십시오 .

2) Ant 빌드 파일을 마우스 오른쪽 버튼으로 클릭 하고 Run As를 선택 하고 "Ant Build"의 두 번째 옵션을 선택합니다.

3) 이제 다양한 옵션과 탭이있는 대화 상자가 열립니다.

4) JRE 탭을 선택 하십시오.

5) 세 개의 라디오 버튼이 표시되며 옵션으로 JRE 또는 JDK가 선택됩니다.

6) 라디오 버튼 옵션에 JRE 가 선택 되어 있는지주의 깊게 살펴본 다음 JDK 로 변경하십시오 .

7) 적용을 클릭합니다.

그게 다야 ... !!!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.