2009-03-29 2 views
12

Mac OS X에서 JDK 1.6으로 Ant를 실행하는 데 문제가 있습니다. Java 응용 프로그램 버전이 OS X의 Java Preference에서 Java SE 6으로 설정되었지만 터미널에서도 java -version을 실행하면 java version "1.6.0_07", Ant는 여전히 내 코드를 컴파일 할 때 JDK 1.6 클래스를 볼 수 없으므로 JDK 1.5를 사용하는 것으로 보인다.Mac OS X에서 JDK 1.6을 사용하여 Ant를 실행하십시오.

Ant는 JAVA_HOME 환경 변수를 사용하여 사용할 JDK를 지정한다는 것을 알고 있습니다. 그러나, 나는이 변수가 Mac OS X에서 어떻게 설정 될 수 있는지 잘 모른다.

그러므로, 나의 질문은 Mac OS X에서 JDK 1.6으로 Ant를 돌리는 방법이다. 올바른 방법으로 여전히 JAVA_HOME 환경을 설정했다면 변수, OS X에서 변수 설정 방법

답변

21

JAVA_HOME 환경 변수는 홈 디렉토리의 .profile 파일에 설정됩니다. (/Users/ejel/.profile?) 편집하고 원하는대로 설정하십시오. 예 :

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home 

이 시점부터 새로운 터미널 창을 열면 JAVA_HOME이이 새 값으로 설정됩니다. 기존의 열린 창과 변경되지는 않습니다.

정말 프로필에 넣기가 어렵거나 다른 소프트웨어와 충돌하는 경우 터미널에서 수동으로 내보내기 문을 실행하거나 실행되는 스크립트 (예 : setj6ev.sh)로 이동할 수 있습니다 개미 작업을 시작하기 전에 한 번.

+0

제공된 솔루션은 실제로 간단하며 작동합니다. 그러나 Java 홈 디렉토리에 대한 올바른 경로는 /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home이어야합니다. – ejel

+0

불량, 테스트하지 않았거나 수정하지 않았습니다. –

+0

이상적으로 사용하면됩니다. ./Versions/Current/Home 그러면 스크립트를 업데이트하지 않고도 VM을 나중에 변경할 수 있습니다. 예를 들어 다음과 같이 연결해야 할 경우/Versions/CurrentJDK/Home을 선택하십시오. 컴파일러 – AlBlue

2

.profile/.bashrc/.zshrc에 JAVA_HOME 변수를 명시 적으로 설정하는 것이 실제로 Mac에서 권장되는 방법은 아닙니다. 명시 적으로 설정된 JAVA_HOME을 특정 버전 (예 : spring 리소스가있는 grails 1.1)으로 묶어 놓은 프로그램이 있습니다.

사용할 Java 버전을 올바르게 설정하는 방법은/Application/Utilities/Java Preferences.app 응용 프로그램을 사용하는 것입니다.

여기에서 사용하려는 Java 버전을 맨 위로 드래그하십시오. 이렇게하면 모든 응용 프로그램 (명령 줄에서 실행되는 응용 프로그램과 GUI 프로세스를 통해 실행되는 응용 프로그램 모두)에서 해당 버전이 활성화됩니다.

당신은 명령 줄에서이 작업을 실행하여 현재 버전을 테스트 할 수 있습니다

java -version 

내가 맥 자바 심볼릭 링크 디렉토리와 파일의 전체 세트를 처리하는 방식처럼 실제로하지 않습니다. 그것은 명백하지 않고 사람들은 종종 그것을 망쳐 놓습니다.

자세한 내용은 apple developer page을 참조하십시오.

+0

제 질문에서 언급했듯이, 이미 JavaPreferences.app에서 Java 버전을 설정했습니다. "java -version"을 실행하면 "1.6.0_07"이 표시됩니다. 그러나 Ant는이 속성에 의존하지 않고 JAVA_HOME env var. – ejel

+0

죄송합니다, 나는 그것을 원래보고 싶었습니다. 자바 기본 설정 응용 프로그램에서이 기능을 제어 할 수 있다고 생각했지만 약간의 테스트 결과에 따르면 그렇지 않은 것으로 나타났습니다. CurrentJDK 링크가 아니라 /System/Library/Frameworks/JavaVM.framework/Versions/Current 링크를 제어합니다. WTF가 사과를 생각하고 있었습니까? –

-1

쉘이 환경 변수에 대한 변경 사항을 선택할 수 있도록 새 명령 프롬프트 인스턴스를 열어야 할 수도 있습니다.

3

Ted, Java Preferences 응용 프로그램을 사용하면 /System/Library/Frameworks/JavaVM.framework/Versions의 CurrentJDK 심볼릭 링크가 변경되지 않습니다. JAVA_HOME 환경 변수가 설정되지 않은 경우 Ant가 사용하게됩니다. 따라서 수동으로 해당 심볼릭 링크를 변경하거나 JAVA_HOME 환경 변수를 설정할 수 있지만 둘 다 수행하지 않으면 Ant는 올바른 JDK를 사용하지 않습니다.

build.xml 파일에 < echo message = "$ {ant.java.version}"/ >을 실행하여 Ant가 사용중인 jdk 버전을 확인할 수 있습니다.

7

내 .zshrc 파일에 라인

export JAVA_HOME=`/usr/libexec/java_home` 

을 추가 한, 트릭을 (.bash_profile에 또는 당신이 무엇을 배쉬를 사용하는 경우) 할 것으로 보인다. 1.6 CurrentJDK 연결을 해제하고, 링크 :

+0

/usr/libexec/java_home이없는 OSX에 관한 질문. 어쨌든 .zshrc는 zsh 용입니다. 기본 셸은 OSX에서 bash입니다. – AlBlue

+1

나는 OS X에있다. – Theo

2

나는 모든 것을 시도하고 단 한 가지 나를 위해 작동

cd /System/Library/Frameworks/JavaVM.framework/Versions 
sudo unlink CurrentJDK 
sudo ln -sF "1.6" CurrentJDK 

마지막으로 내가 얻을 :

java -version 
java version "1.6.0_22" 

난이 도움이되기를 바랍니다.