Mac에서 Java의 기본 버전을 어떻게 변경할 수 있습니까?
Mac에서 Java의 기본 버전을 어떻게 변경할 수 있습니까?
답변:
먼저 /usr/libexec/java_home -V
다음과 같은 결과를 출력합니다 :
Matching Java Virtual Machines (3):
1.8.0_05, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
1.6.0_65-b14-462, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-462, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
기본값이 되고자하는 버전을 선택하십시오 ( 1.6.0_65-b14-462
인수를 위해) :
export JAVA_HOME=`/usr/libexec/java_home -v 1.6.0_65-b14-462`
또는 다음과 같이 주요 버전 만 지정할 수 있습니다.
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
이제 실행 java -version
하면 다음을 볼 수 있습니다.
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
export JAVA_HOME…
쉘의 init 파일에 라인을 추가 하십시오.
Bash의 경우 ( antonyh가 명시한 대로 ) :
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
물고기의 경우 (오르 무 린이 명시한대로)
set -x JAVA_HOME (/usr/libexec/java_home -d64 -v1.8)
export
라인
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
.-또한 java_home은 부분 일치를 허용하므로 최신 버전을 찾을 때 정식 버전을 포함시킬 필요가 없습니다. 업데이트가 쉬워집니다.
이 답변은 macOS El Capitan 이상 (Sierra, High Sierra, Mojave) 에 개발 목적으로 여러 버전의 JDK 가 설치되어 있을 때 (현재 실행중인 쉘뿐만 아니라) 시스템 전체에서 Java 버전 을 제어 하는 방법을 해결하려는 시도 입니다 . 내가 알 수있는 한 현재 답변 중 어느 것도 그렇게하지 않습니다 (*).
개발자는 여러 개의 JDK를 사용하며 하나에서 다른 것으로 쉽게 전환하려고합니다. 일반적으로 일반적인 용도로는 안정적인 최신 버전이 있고 테스트에는 다른 최신 버전이 있습니다. 그러나 나는 시스템이 (예를 들어 IDE를 시작할 때) 현재 가지고있는 최신 "이른 액세스"버전을 사용하기를 원하지 않습니다. 시스템의 기본값을 제어하고 싶습니다. 최신 안정이어야합니다.
다음 접근 방식은 Oracle JDK 또는 OpenJDK ( 2018 년 10 월 중순 이후에 생성 된 AdoptOpenJDK의 빌드 포함 ) 와 함께 Java 7 ~ 12 에서 작동합니다 (이 문서 작성 시점에 초기 액세스시 ).
/Library/Java/JavaVirtualMachines
. 시스템은 기본적으로 가장 높은 버전을 선택합니다. Contents/Info.plist
로 변경하십시오Info.plist.disabled
. 이 JDK는 여전히 JDK를 $JAVA_HOME
가리킬 때 사용 하거나 스크립트 또는 구성에서 명시 적으로 참조 할 수 있습니다. 시스템 java
명령으로 간단히 무시됩니다 .시스템 런처는 Info.plist
파일 이있는 것 중에서 가장 높은 버전의 JDK를 사용 합니다.
대체 JDK가있는 쉘에서 작업 할 때 기존 답변 ( jenv
또는 사용자 정의 별명 / 스크립트 /usr/libexec/java_home
등) 중에서 방법을 선택하십시오 .
이 요점에서 조사의 세부 사항 .
(*) 현재 답변은 더 이상 사용되지 않거나 (MacOS El Capitan 또는 Sierra에는 더 이상 유효하지 않음) 단일 JDK 만 해결하거나 시스템 전체 측면을 다루지 않습니다. 많은 사람들 $JAVA_HOME
이 변경하는 방법을 설명 하지만 이것은 현재 쉘과 그 쉘에서 시작된 내용에만 영향을 미칩니다. 올바른 파일과 로그 아웃 / 로그인을 변경하지 않는 한 OS 런처에서 시작한 응용 프로그램에는 영향을 미치지 않습니다. jenv와 동일하지만 멋지지만 모두 환경 변수 만 변경한다고 말할 수있는 한 동일한 제한이 있습니다.
jenv
이나 JAVA_HOME
시스템 전체의 자바 버전을 설정할 수 있습니다, 즉 하나의 이클립스 사용합니다.
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/
. 새 환경 설정 분할 창이 실행되는 것 같습니다. 이것이 내 솔루션에서 발견 한 유일한 예외입니다. thingy는 여전히 JDK9 (최신 설치)를 사용하지만 다른 Java 응용 프로그램은 사용하지 않습니다. "
위의 답변에 덧붙여, 다음 줄을 내 .bash_profile
(또는 .zshrc
MacOS 10.15+)에 넣었습니다.
alias j12="export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version"
alias j11="export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version"
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j8="export JAVA_HOME=`/usr/libexec/java_home -v 1.8`; java -version"
alias j7="export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version"
삽입 후 실행 $ source .bash_profile
다음을 입력하여 Java 8로 전환 할 수 있습니다.
$ j8
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
alias j9="export JAVA_HOME=`/usr/libexec/java_home -v 9`; java -version"
alias j10="export JAVA_HOME=`/usr/libexec/java_home`; java -version"
후 입력은 j10
당신이 (내 경우 자바 10) 자바의 현재 버전으로 다시 전환 할 수 있습니다
nvm
Java 버전을 전환하는 것과 비슷한 CLI 도구를 만들지 만 약어는 jvm
이미 다른 것을 의미합니다.)
/Users/me/.zshrc:8: permission denied: /Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/Home
/ usr / libexec / java_home에 기반한 작은 어류 기능
function jhome
set JAVA_HOME (/usr/libexec/java_home $argv)
echo "JAVA_HOME:" $JAVA_HOME
echo "java -version:"
java -version
end
물고기를 사용하지 않으면 bash에서 비슷한 것을 할 수 있습니다.
#!/bin/bash
jhome () {
export JAVA_HOME=`/usr/libexec/java_home $@`
echo "JAVA_HOME:" $JAVA_HOME
echo "java -version:"
java -version
}
그런 다음 Java 간을 전환하려면 다음을 수행하십시오.
$> jhome #switches to latest java
$> jhome -v 1.7 #switches to java 1.7
$> jhome -v 1.6 #switches to java 1.6
export JAVA_HOME=(/usr/libexec/java_home $argv)
의 두 번째 줄 대신 작성해야했습니다 jhome
.
약간 까다 롭지 만 OS X 10.9에 Java 설치 (매버릭스)에 설명 된 단계를 따르십시오 . 기본적으로 별칭을로 업데이트해야합니다 java
.
단계별 :
JDK 1.7을 설치 한 후 sudo ln -snf
링크를 current로 변경 하려면을 수행해야합니다 java
. 이렇게하려면 터미널을 열고 다음 명령을 실행하십시오.
sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
jdk1.7.0_51.jdk
설치 한 SDK 버전에 따라 디렉토리 가 변경 될 수 있습니다.
이제 설치된 JAVA_HOME
위치를 가리 키도록 설정해야합니다 jdk_1.7.0_xx.jdk
. 터미널을 다시 열고 다음을 입력하십시오.
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home"
파일에 export JAVA_HOME
위 의 줄을 추가 .bashrc
하여 터미널에서 Java를 영구적으로 가질 수 있습니다
JAVA_HOME
는 현재 터미널 세션에서 내보내집니다. .bashrc
원하는 경우 추가 할 수 있습니다 . 마지막 버전에 명령을 적용하겠습니다.
jenv를 사용하는 것은 쉬운 방법입니다.
1. jenv 설치
컬 -s get.jenv.io | 세게 때리다
2. jenv 구성
cd ~ / .jenv / 후보자 / mkdir 자바 CD 자바 mkdir 1.7 mkdir 1.8
3. jdk 경로를 심볼릭 링크
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin ~ / .jenv / candidates / java / 1.7 ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin ~ / .jenv / candidates / java / 1.8
4. 모든 설정
스위치 명령 :
jenv 사용 자바 1.8
기본값으로 설정:
jenv 기본 자바 1.7
JRE뿐만 아니라 JDK 설치
/usr/libexec/java_home -v 1.8
준다
/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
다음
touch .bash_profile
open -a TextEdit.app .bash_profile
TextEdit은 빈 페이지를 보여줄 수 있습니다.
문서에 추가 :
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
터미널에서 :
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
다음 명령을 시도하십시오 :
javac -version
출력해야합니다 :
javac 1.8.0_111
jenv를 사용하면 Java 환경 관리자와 같습니다. 사용 및 청소가 매우 쉽습니다.
Mac의 경우 다음 단계를 수행하십시오.
brew install jenv
git clone https://github.com/gcuisinier/jenv.git ~/.jenv
설치 : bash를 사용하는 경우 다음 단계를 수행하십시오.
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
jenv에 원하는 버전의 JVM을 추가하십시오.
jenv add /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
jenv add /System/Library/Java/JavaVirtualMachines/1.8.0.jdk/Contents/Home
설치된 버전을 확인하십시오.
jenv versions
사용하려는 Java 버전을 설정하십시오.
jenv global oracle64-1.6.0
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
이것을 ~ / .profile에 넣고 터미널에서 사용하십시오 setjdk 1.8
.setjdk 1.7
, setjdk 9
등 등 ...
없는 경우 removeFromPath
다음과 같습니다.
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
기본 프로세스를 사용하는 사람들을 위해 터미널을 사용하는 쉬운 4 단계 .. :)
echo $JAVA_HOME
현재 자바 홈을 제공합니다. 예를 들어 :/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/
cd /Library/Java/JavaVirtualMachines/
일반적으로 jdk를 설치하는 폴더로 이동합니다 (컴퓨터에 따라 다를 수 있음)
ls
사용 가능한 폴더를 표시합니다 (일반적으로 버전 번호가 다음과 같습니다). jdk1.8.0_191.jdk openjdk-11.0.2.jdk
).export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home'
자바 홈을 바꿀 것입니다 ..macOS El Capitan 이상은 에서 사용할 수있는 더 높은 버전의 JDK를 선택 /Library/Java/JavaVirtualMachines
하므로 다운 그레이드하려면 파일 이름 Info.plist
을 다른 것으로 변경 Info.plist.disabled
하여 OS가 이전 버전을 선택할 수 있습니다.
Apple의 공식 java_home (1) 매뉴얼 페이지에서 :
**USAGE**
/usr/libexec/java_home helps users set a $JAVA_HOME in their login rc files, or provides a way for
command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi-
tecture requirement. The --exec argument can invoke tools in the selected $JAVA_HOME/bin directory,
which is useful for starting Java command-line tools from launchd plists without hardcoding the full
path to the Java command-line tool.
Usage for bash-style shells:
$ export JAVA_HOME=`/usr/libexec/java_home`
Usage for csh-style shells:
% setenv JAVA_HOME `/usr/libexec/java_home`
먼저 환경 변수를 어디에 저장합니까?
환경 변수를 설정하는 단계 :-
이제 파일에 환경 변수를 설정하십시오.
ㅏ. 들어 emacs.profile 이 사용할 수있는 링크를 또는 아래 스크린 샷 참조
비. ZSH 프로파일 설정의 경우-
1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
2. source ~/.zshrc - Restart zshrc to reflect the changes.
3. echo $JAVA_HOME - make sure path is set up properly
----> /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
4. java -version
--> java version "1.8.0_112" Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)
모든 설정 이제 JAVA 버전을 쉽게 업그레이드하거나 저하시킬 수 있습니다.
위의 @Alex의 답변을 수정했으며 Java 9의 코드를 수정하기 위해 다음을 작성했습니다.
$ cat ~/.jdk
#!/bin/bash
#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() {
echo "Switching java version $1";
requestedVersion=$1
oldStyleVersion=8
# Set the version
if [ $requestedVersion -gt $oldStyleVersion ]; then
export JAVA_HOME=$(/usr/libexec/java_home -v $1);
else
export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
fi
echo "Setting JAVA_HOME=$JAVA_HOME"
which java
java -version;
}
$ jdk 8
Switching java version 8
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
/usr/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
$ jdk 9
Switching java version 9
Setting JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
/usr/bin/java
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
물고기를 사용하고 mac을 사용하고 있고 JDK를 전환하고 싶다면 아래 Mac에서 작동합니다.
@ kenglxn의 대답이 저에게 효과가 없었으며 bcos가 전역 -g를 설정하지 않았다는 것을 알았습니다!
~ / .config / fish / config.fish 아래에 넣으십시오
alias j8="jhome -v 1.8.0_162"
alias j9="jhome -v 9.0.1"
function jhome
set -g -x JAVA_HOME (/usr/libexec/java_home $argv)
echo "JAVA_HOME:" $JAVA_HOME
echo "java -version:"
java -version
end
funcsave jhome
설치 한 버전 / 부 버전을 확인하려면 다음을 수행하십시오.
/usr/libexec/java_home -V 579ms Wed 14 Feb 11:44:01 2018
Matching Java Virtual Machines (3):
9.0.1, x86_64: "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
1.8.0_162, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
1.8.0_121, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home
여러 버전이 있고 특정 버전을 사용하여 무언가를 실행하려면 다음 예제를 사용하십시오.
/usr/libexec/java_home -v 1.7.0_75 --exec java -jar you-file.jar
@markhellewell 답변을 바탕으로 나는 당신을 위해 그것을 할 몇 가지 별칭 함수를 만들었습니다. 이것을 쉘 시작 파일에 추가하십시오.
#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() {
echo "Switching java version";
export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`;
java -version;
}
https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4
다음은 Linux (Ubuntu / Mint mate) 에서 수행하는 방법입니다. Mac에서도 비슷하게 할 수 있습니다.
단계 :
/mnt/star/program/java/jdk-1.8
ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
/mnt/star/program/java/java
소프트 링크입니다.JAVA_HOME
시작 스크립트에서 설정하십시오 . /etc/profile.d/eric.sh
, 또는 사용 ~/.bashrc
. JAVA_HOME=/mnt/star/program/java/java
java -version
자바 버전을 인쇄해야합니다./mnt/star/program/java/jdk-11
~/.bashrc
다양한 Java 버전에 대한 변수를 정의하십시오. _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11'
_E_JAVA_HOME_8='/mnt/star/program/java/jdk-8'
# dir of default version,
_E_JAVA_HOME_D=$_E_JAVA_HOME_8
~/.bashrc
Java 버전을 전환하는 명령을 정의하십시오. ## switch java version,
alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME"
alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME"
# default java version,
alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME"
alias jv="java -version"
source ~/.bashrc
에서 변경 사항을 적용합니다.명령 :
jv11
jv8
jvd
_E_JAVA_HOME_D
위에 정의 된
기본 Java 버전으로 전환하십시오 .jv
출력 예 :
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
eric@eric-pc:~$
JAVA_HOME
.jdk를 수동으로 설치할 때 내 컴퓨터에서 부 버전을 유지 한 다음 부 버전없이 주 버전과 소프트 링크를 만듭니다.
예 :
// 이것은 실제 디렉토리입니다.
jdk1.8.0_191
// 이것은 소프트 링크입니다 jdk1.8.0_191
jdk-8
// 이것은 jdk-8
또는jdk-11
java
에 명령 별칭을 ~/.bashrc
정의하지만 별도의 파일에 변수를 정의합니다.
내가 사용하고 ~/.eric_var
변수를 정의하고, ~/.bashrc
이를 (예 : 소스 것이다 source $HOME/.eric_var
).
제공된 목록에 별도로 설치된 JDK를 포함시키는 쉬운 방법 /usr/libexec/java_home -V
은 다음과 같이 디렉토리를 심볼릭 링크하는 것입니다.
sudo ln -s path/to/jdk /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk
예를 들어 Android Studio에 포함 된 JDK를 등록하려면 (작성시 1.8.0_152) 다음을 사용하십시오.
sudo ln -s /Applications/Android\ Studio.app/Contents/jre/jdk /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk
이제 java_home
JDK가 아래에 나열되고 Matching Java Virtual Machines
위에서 설명한대로 선택할 수 있습니다.
나는 로컬 터미널을 위해 그것을했다.
export JAVA_8_HOME=(/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/)
export JAVA_13_HOME=(/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/)
alias java8='export JAVA_HOME=$JAVA_8_HOME; alias java="$JAVA_8_HOME/bin/java"; $JAVA_8_HOME/bin/java -version'
alias java13='export JAVA_HOME=$JAVA_13_HOME; alias java="$JAVA_13_HOME/bin/java"; $JAVA_13_HOME/bin/java -version'
export JAVA_HOME=$JAVA_13_HOME
이 도구는 다음 작업을 수행합니다.
http://www.guigarage.com/2013/02/change-java-version-on-mac-os/
현재 Java 버전을 정의하는 데 사용할 수있는 간단한 JavaOne입니다. 버전은 도구에서 버전을 선택한 후 열리는 쉘에서 사용할 수 있습니다.
너무 쉬운 솔루션 : 정말 두통-이것은 나를 위해 일한 빠르고 쉬운 솔루션이었습니다.
Mac OS Sierra 버전 10.12.13
바로 가기 키를 사용하십시오. CMD + SHIFT + G- "/ Library /"입력
JAVA 폴더 찾기
Java 폴더를 마우스 오른쪽 단추로 클릭 = 휴지통으로 이동 (암호 필요)
설치 : Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | 자바 스크립트 SDK 다운로드
/usr/libexec/java_home
은 무엇을 말합니까?