OS X에서 기본 Java (JDK) 버전을 설정하거나 변경하는 방법은 무엇입니까?
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)
이 답변은 macOS El Capitan 이상 (Sierra, High Sierra, Mojave) 에서 개발 목적으로 여러 버전의 JDK 가 설치된 경우 시스템 전체에서 Java 버전 을 제어 하는 방법 (현재 실행중인 셸뿐만 아니라) 을 해결하려는 시도 입니다 . 내가 말할 수있는 한, 현재 답변 중 어느 것도 그렇게하지 않습니다 (*).
개발자로서 저는 여러 JDK를 사용하며 하나에서 다른 것으로 쉽게 전환하고 싶습니다. 일반적으로 나는 일반적인 사용을 위해 최신 안정된 것을 가지고 있고 테스트를 위해 다른 것을 가지고 있습니다. 하지만 시스템 (예 : IDE를 시작할 때)이 현재 가지고있는 최신 "얼리 액세스"버전을 사용하는 것을 원하지 않습니다. 시스템의 기본값을 제어하고 싶습니다. 최신 안정 버전이어야합니다.
다음 접근 방식은 Oracle JDK 또는 OpenJDK ( 2018 년 10 월 중순 이후에 생성 된 AdoptOpenJDK 빌드 포함 )를 사용 하여 Java 7 ~ 12 (이 문서 작성 당시 조기 액세스)에서 작동합니다 .
타사 도구가없는 솔루션 :
- 모든 JDK를 기본 위치의
/Library/Java/JavaVirtualMachines
. 시스템은 기본적으로 가장 높은 버전을 선택합니다. - JDK가 기본적으로 선택되지 않도록 제외하려면 이름
Contents/Info.plist
을Info.plist.disabled
. 해당 JDK를$JAVA_HOME
가리킬 때 사용 하거나 스크립트 또는 구성에서 명시 적으로 참조 할 수 있습니다. 단순히 시스템의java
명령에 의해 무시됩니다 .
시스템 런처는 Info.plist
파일 이있는 버전 중 가장 높은 버전의 JDK를 사용 합니다.
대체 JDK가있는 셸에서 작업 할 때 기존 답변 ( jenv
또는 사용자 지정 별칭 / 스크립트 /usr/libexec/java_home
등) 중에서 방법을 선택합니다 .
이 요점 에 대한 조사의 세부 사항 .
(*) 현재 답변은 더 이상 사용되지 않거나 (macOS El Capitan 또는 Sierra에 더 이상 유효하지 않음) 단일 JDK 만 처리하거나 시스템 전체 측면을 처리하지 않습니다. 많은 사람들 $JAVA_HOME
이 변경 방법을 설명 하지만 이것은 현재 셸과 거기에서 시작되는 항목에만 영향을 미칩니다. OS 런처에서 시작된 애플리케이션에는 영향을 미치지 않습니다 (올바른 파일을 변경하지 않는 한 지루한 로그 아웃 / 로그인). jenv와 동일하지만 멋지지만 내가 말할 수있는 한 환경 변수 만 변경하므로 동일한 제한이 있습니다.
위의 답변에 추가하여 다음 줄을 추가하여 .bash_profile
전환하는 것이 정말 편리합니다 (Java 9에 대한 @elektromin의 주석 포함).
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)
/ 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
심판 : https://gist.github.com/kenglxn/1843d552dff4d4233271
jenv를 사용하는 것은 쉬운 방법입니다.
1. jenv 설치
curl -s get.jenv.io | 세게 때리다
2. jenv 구성
cd ~ / .jenv / candidates / 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
약간 까다 롭지 만 OS X 10.9 (Mavericks)에 Java 설치에 설명 된 단계를 따르십시오 . 기본적으로 별칭을 java
.
단계별 :
JDK 1.7을 설치 한 후 sudo ln -snf
링크를 현재로 변경하려면이 를 수행해야합니다 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를 영구적으로 사용할 수 있습니다.
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
텍스트 편집기는 채울 수있는 빈 페이지를 표시합니다.
문서에 추가 : 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
tl; dr
다음 행을 추가하십시오.
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home'
파일에
~/.bash_profile
(jdk1.8.0_144.jdk를 다운로드 한 버전으로 대체)
그때 source ~/.bash_profile
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
원하는 버전의 JVM을 jenv에 추가하십시오.
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:?;;") }
~/.zshenv
파일 에 다음 명령을 추가 하십시오
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
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`
JDK 스위치 스크립트
위의 @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;
}
Java 8로 전환
$ 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)
Java 9로 전환
$ 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)
그래도 설정할 수 없다면. 이 명령을 사용합니다.
수출 JAVA_HOME =/usr/libexec/java_home -v 1.8
이걸 사용해야합니다.
수출 JAVA_HOME =$(/usr/libexec/java_home -v 1.8)
확실히 작동합니다.
먼저 환경 변수를 어디에 저장합니까?
- 이맥스
- bash_profile
- zshrc 파일
환경 변수 설정 단계 :-
- JAVA에서 jdk 다운로드
- 더블 클릭으로 설치
이제 파일에 환경 변수를 설정하십시오.
ㅏ. 들어 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 버전을 쉽게 업그레이드하거나 저하시킬 수 있습니다.
물고기를 사용하고 있고 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도 비슷하게 수행 할 수 있습니다.
설치 및 구성
단계 :
- [기본-부품]
- Download jdk (the .tgz file) by hand.
- Uncompress & rename properly, at a proper location.
e.g/mnt/star/program/java/jdk-1.8
- Make a soft link, which will be changed to switch java version later.
e.gln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java
Thus/mnt/star/program/java/java
is the soft link. - Set
JAVA_HOME
in a start script.
Could use file like/etc/profile.d/eric.sh
, or just use~/.bashrc
.
e.gJAVA_HOME=/mnt/star/program/java/java
- Then open a new bash shell.
java -version
should print the java version. - [More version - part]
- Download & install more Java version, as need, similar as above steps.
e.g
/mnt/star/program/java/jdk-11
- [Switch - part]
- In
~/.bashrc
, define variable for various Java version.
e.g
_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
- In
~/.bashrc
, define command to switch Java version.
e.g
## 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"
- In terminal,
source ~/.bashrc
to make the changes take effect. - Then could switch using the defined commands.
Commands - from above config
Commands:
jv11
Switch to Java 11jv8
Switch to Java 8jvd
Switch to default Java version, which is denoted by_E_JAVA_HOME_D
defined above.jv
Show java version.
Example output:
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:~$
Mechanism
- It switch by changing the soft link, which is used as
JAVA_HOME
.
Tips
On my machine when install jdk by hand, I keep the minor version, then make a soft link with the major version but without the minor version.
e.g
// this is the actual dir,
jdk1.8.0_191
// this is a soft link to
jdk1.8.0_191
jdk-8
// this is a soft link to
jdk-8
orjdk-11
java
I define command alias in
~/.bashrc
, but define variable in a separate file.
I am using~/.eric_var
to define the variables, and~/.bashrc
will source it (e.gsource $HOME/.eric_var
).
An easy way to include a separately installed JDK in the list given by /usr/libexec/java_home -V
is to symlink the directory as follows:
sudo ln -s path/to/jdk /Library/Java/JavaVirtualMachines/jdk-[some-identifier].jdk
For example, to register the JDK included with Android Studio (1.8.0_152 at the time of writing), use:
sudo ln -s /Applications/Android\ Studio.app/Contents/jre/jdk /Library/Java/JavaVirtualMachines/jdk-android-studio.jdk
Now java_home
will list the JDK under Matching Java Virtual Machines
and you can select it as described above.
Four easy steps using terminal for people who uses the default process.. :)
echo $JAVA_HOME
gives you current java homecd /Library/Java/JavaVirtualMachines/
will take you to the folder where u normally install jdks (It might be different for your machines)ls
shows you available folders (normally it will have the version numbers, for eg:jdk1.8.0_191.jdk openjdk-11.0.2.jdk
)export JAVA_HOME='/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home'
will change the java home..
This tool will do the work for you:
http://www.guigarage.com/2013/02/change-java-version-on-mac-os/
It's a simple JavaOne that can be used to define the current Java Version. The version can be used in a shell that is opened after a version was selected in the tool.
TOO EASY SOLUTION: What a headache - this was a quick easy solution that worked for me.
Mac OS Sierra Version 10.12.13
Use the shortcut keys: CMD+SHIFT+G - type in "/Library/"
Find the JAVA folder
Right Click Java Folder = Move to Trash (Password Required)
Install: Java SE Development Kit 8 jdk-8u131-macosx-x64.dmg | Download Javascript SDK
- Make sure the new JAVA folder appears in /LIBRARY/
- Install Eclipse | Install Eclipse IDE for Java Developers
- Boom Done
'your programing' 카테고리의 다른 글
SQL Server에서 레코드를 삭제 한 후 ID 시드 재설정 (0) | 2020.10.02 |
---|---|
Python을 사용하여 시스템 호스트 이름을 얻으려면 어떻게해야합니까? (0) | 2020.10.02 |
Apache HTTP Server와 Apache Tomcat의 차이점은 무엇입니까? (0) | 2020.10.02 |
Subversion에서 파일을 어떻게 무시합니까? (0) | 2020.10.02 |
'커링'이 무엇인가요? (0) | 2020.10.02 |