javac1.8 클래스를 찾을 수 없습니다.


80

jdk 1.5와 jdk 1.8의 두 개의 jdk를 설치했습니다. 다음 Ant build.xml 구성 파일이 있습니다.

<target name="compileCustomSrc">
    <javac srcdir="src" destdir="build/classes" source="1.5" target="1.5" >
        <classpath>
            <fileset dir="C:/lib/">
                <include name="*.jar" />
            </fileset>
        </classpath>
    </javac>
</target>

jdk1.8을 설치하기 전에 Eclipse에서 호출 된 Ant는 모든 소스를 성공적으로 컴파일했습니다. 하지만 이제 다음과 같은 오류 메시지가 있습니다.

클래스를 찾을 수 없음 : javac1.8

내 JAVA_HOME 및 JRE_HOME :

JAVA_HOME = C : \ Program Files (x86) \ Java \ jdk1.5.0_16
JRE_HOME = C : \ Program Files (x86) \ Java \ jre1.5.0_16

Eclipse JRE에서 1.5로 설정합니다. Java 1.8은 설치 중에 일부 구성을 설정합니까?

답변:


173
클래스를 찾을 수 없음 : javac1.8

이 오류는 Java 8과 호환되지 않는 1.9.0 미만의 Apache Ant 버전에서 발생하는 것으로 알려져 있습니다. Ant <1.9.0 버전을 사용하는 경우 1.9.x 릴리스로 업데이트해야합니다.

관련 버그 보고서는 다음과 같습니다. https://issues.apache.org/bugzilla/show_bug.cgi?id=53347

Btw, Java 8로 컴파일하고 싶지만 실제 Java 8 구문을 컴파일 할 필요가없는 경우 해결 방법 으로 다음 인수를 javac에 전달할 수 있습니다. 그러면 이전 버전의 Ant를 계속 사용할 수 있습니다. :

-Dbuild.compiler=javac1.7

9
이 문제가 발생했으며 지정된 플래그 ( -Dbuild.compiler=javac1.7)가 직접 전달 될 때도 작동 ant합니다.
cincodenada 2014

Kristian 답변이 정확합니다. Eclipse에서 ant-launch 구성을 생성 할 때 -Dbuild.compiler = javac1.7을 추가 할 수 있습니다. < bugs.eclipse.org/bugs/show_bug.cgi?id=409358 >
Shiva Achari

5
코드를 찾았습니다 . Java 1.3 이하를 사용하고 있는지 테스트하고 있습니다. 10 년 전의 오래된 코드. 이 때문에 Ant는 Oracle이 새로운 1.x 버전을 출시 할 때마다 중단됩니다. Ant에는 이미 1.4 이상이 필요합니다. 코드에서이 검사를 제거해야합니다.
David W.

3
@ David W-대체 Java 1.9 및 2.0에 대한 지원을 추가하지 않은 이유는 변경 사항이 향후 6 년 또는 8 년 동안 작동합니다. Java 9가 곧 출시 될 예정이며 모든 것이 다시 중단 될 것입니다 ....
jww aug

2
2012 년 Eclipse의 Ant 1.9.0에서 버그가 수정되었지만 Eclipse Kepler (2014!)의 Ant는 여전히 1.8.4이므로이 문제는 여전히 존재합니다. Luna에서 업그레이드 되었습니까, 아니면 아직 기다리고 있습니까? (나는 완전히 적절한 변화를 추적 모든 종류의 쓸모 어떤 플러그인의 버전이 어떤 버전에 무슨 일이 있었는지 알고 이클립스의 웹 사이트를 찾아,이 어디 있습니까?)
스튜어트 로시

14

Kristian Holdhus의 답변 (올바른 것으로 표시됨)에 대한 후속으로 Ant javac 작업compiler 에 속성을 대신 사용할 수 있습니다 . 설정 은 이전 버전 (1.3까지)과 호환 가능해야합니다.compiler="modern"

이렇게하면이라는 Java System 속성을 설정할 필요가 없습니다 build.compiler. 태스크 compiler에 대한 속성을 명시 적으로 설정하지 않은 경우에만 javacAnt는의 값을 build.compiler폴백으로 사용합니다.


나는 확실히 Kristian Holdus의 대답을 찬성했습니다. 그러나 이것이 내 상황에 더 나은 해결책이라는 것을 알았습니다. 호출자가 -D 매개 변수를 추가하도록 강제함으로써 build.xml을 외부 사용자에게 전달하기 어렵게 만듭니다. 또한 항상
적을

구축 할 때 메모를 보여주는 그 작업, [javac] warning: C:\Program Files\Java\jre1.8.0_152\lib\rt.jar(java/net/ConnectException.class): major version 52 is newer than 51, the highest major version supported by this compiler. [javac] It is recommended that the compiler be upgraded.
aswzen

7

나는 이와 같은 문제가 있었다. JAVA_HOME 및 JRE_HOME이 올바르게 설정되었습니다. 또한 Ant> 1.9를 가졌습니다.

내가 그것을 고치기 위해 한 일은 Eclipse에서 Window-> Preferences로 이동하는 것입니다. Ant를 펼치고 런타임을 선택하십시오. 기본적으로 Classpath 탭이 선택되어야하며 오른쪽에 "Ant Home"이라는 버튼이 있습니다. 이 버튼을 클릭하고 Ant 폴더를 가리키고 있는지 다시 확인하십시오.


3
JAVA_HOME = C:\Program Files (x86)\Java\jdk1.5.0_16
JRE_HOME = C:\Program Files (x86)\Java\jre1.5.0_16

JAVA_HOME 및 JRE_HOME이 Java 1.5 설치로 설정되어 있으므로 1.8 바이너리 (예 :)를 javac찾을 수 없습니다. Java 1.8 설치로 설정하면 괜찮습니다.


하지만 jdk1.8을 사용하고 싶지 않습니다. Ant가이 설정으로 1.8 컴파일러를 사용하는 이유는 무엇입니까?
kamilz

1
"다음으로 실행"> "Ant 빌드 ..."로 Ant 빌드를 실행 한 다음 "JRE"탭을 열고 스크립트를 실행하는 데 사용할 "런타임 JRE"를 선택하십시오.
Toni Toni Chopper

"javac"태스크는 이전 vms에 대한 바이트 코드를 생성 할 수 있습니다. doco의 "target"속성을 참조하십시오. ant.apache.org/manual/Tasks/javac.html Java 1.5는 이후 VM에 대한 바이트 코드를 생성 할 수 없습니다.
Mark O'Connor

2

Eclise로 시도했지만 동일한 오류 Class not found : javac1.8

내 시스템에서 ANT 버전을 확인했습니다.

> 개미 버전

2015 년 6 월 29 일에 컴파일 된 Apache Ant (TM) 버전 1.9.6

명령 프롬프트에서 build.xml을 실행하려고 할 때 작동했습니다. 그런 다음 Eclipse에서 이전 버전의 ANT를 참조하고 있는지 확인했습니다.

Eclipse에서 ANT HOME 경로를 간단히 편집했으며 여기에서도 작동했습니다. :)

아래는 Eclipse에서 ANT 경로를 편집해야하는 이미지입니다.

  1. build.xml 파일을 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 다음으로 실행
  3. 외부 도구 구성
  4. 클래스 경로 탭을 선택하십시오.

이제 여기에서 ANT 홈 경로를 변경하십시오.

여기에 이미지 설명 입력


ANT Home 경로를 무엇으로 변경 했습니까?
IgorGanapolsky

1
안녕하세요 @IgorGanapolsky 이전에 Ant 버전 경로는 Ant 1.8의 경로였으며 위의 이미지와 같이 최신 Ant 버전 1.9로 업데이트했습니다. 그리고 그것은 효과가있었습니다. 질문에 답했으면 좋겠습니다.
KulDeep

1

1.9 이하의 Ant 버전과 호환되지 않는 Java 8로 Ant를 1.9.x 릴리스로 업데이트


0

다른 모든 솔루션을 시도했지만 아무것도 작동하지 않았습니다. 마침내 Eclipse에서 나를 위해 일한 접근 방식을 찾았습니다.

  • ant창 에서 개미 작업 이름 (예 : "compileCustomSrc")을 마우스 오른쪽 버튼으로 클릭합니다 .
  • 고르다 Run As | External Tool Configurations
  • 그런 다음에 JRE탭을 선택 Separate JRE: Java SE7하거나 자바 (7)라는 이름의 다음 공격 무엇이든 Apply다음과 Run.

개미 작업이 실행되고 올바르게 빌드됩니다!


0

Ant를 1.9 이하의 Ant 버전과 호환되지 않는 Java 8로 1.9.x 릴리스로 업데이트하거나 comand put -Dbuild.compiler = javac1.7 후에 다음을 참조하십시오.

개미 릴리스 -Dbuild.compiler = javac1.7



0

때때로 ANT를 통해 전쟁을 빌드하는 동안 발생하는 문제는 build.XML이 build.compiler 속성에 언급 된 자바 버전을 사용하려고 할 때 build.properties 파일의 자바 버전 미스 일치와 관련이 있습니다.

build.compiler 속성이 의도 한 Java 버전과 동일한 지 확인하십시오.


0

플러그인 디렉토리에 최신 버전의 Ant를 포함하는 최신 버전의 eclipse를 다운로드 할 수 있습니다. 그런 다음 Ant jar를 이전 Eclipse의 플러그인 디렉토리에 복사하십시오. Eclipse는 자동으로 최신 버전의 Ant를 가리 킵니다. 이것은 나를 위해 새로운 Mars2와 함께 이전 Kepler에서 작동했습니다.


0

나는 같은 문제가 있었다. 그리고 속성을 설정하여 build.xml 내에서 해결할 수있었습니다.

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