여러 Java 버전 간 전환


65

Ubuntu 14.04에 Android Studio를 설치하는 동안 Java 버전 ( javac 1.7.0_79)에 문제가 있다는 메시지가 나타납니다 . 최신 Oracle 버전의 Java를 설치하는 방법에 대한 솔루션 을 찾았습니다 .

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

그러나 이것이 기존 open-jdk의 Java 버전을 덮어 쓸 수도 있습니다 . 어떤 프로그램이 Java에 의존하는지 모르기 때문에 이것이 다른 프로그램과 충돌 할 수 있다고 걱정합니다.

apt-get이전 Java를 덮어 쓰지 않도록하는 방법이 있습니까? 기본적으로 두 버전을 모두 설치하고 필요한 버전에 따라 수동으로 전환 할 수 있기를 원합니다.

답변:


83

Apt-get은 기존 Java 버전을 덮어 쓰지 않습니다.

설치된 Java 버전 간을 전환하려면 update-java-alternatives명령을 사용하십시오 .

모든 Java 버전을 나열하십시오.

update-java-alternatives --list

Java 버전을 기본값으로 설정하십시오 (루트 권한 필요).

sudo update-java-alternatives --set /path/to/java/version

... 여기 /path/to/java/version에서 이전 명령으로 나열된 항목 중 하나입니다 (예 :) /usr/lib/jvm/java-7-openjdk-amd64.


추가 정보:

update-java-alternatives데비안의 사용 편의 도구입니다 대안 시스템 ( update-alternatives지정된 자바 버전에 대한 링크의 무리를 설정) (예를 들어 java, javac...).


1
나를 위해 이것은 java -version을 java8로 만들었지 만 JAVA_HOME은 여전히 ​​7로 설정되었습니다 :(
Nenotlep

tq 이것은 내 문제도 해결합니다. 내가 무슨 짓을했는지 @Nenotlep 것은의 .bashrc에 수동 또는 / etc / 환경 환경 변수를 편집이다
nuttynibbles

update-java-alternatives나를 위해 사용할 수 없었습니다. 방금 해당 명령을로 바꿨습니다 update-alternatives java.
nofinator

java실행 파일 에만 영향을주는 @nofinator 어떤 우분투 버전을 사용하십니까?
danzel

1
@Nenotlep를 변경 JAVA_HOME하려면 다음 명령을 실행해야합니다. source /etc/environment
janb

48

사용하다

sudo update-alternatives --config java

현재 활성화 된 버전이 표시된 모든 설치된 버전을 나열하고 전환 할 수있는 대화 상자를 제공합니다.

There are 3 choices for the alternative java (providing /usr/bin/java).

Selection    Path...
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java...
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/java...
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java...
  3            /usr/lib/jvm/java-9-oracle/bin/java...

Press <enter> to keep...[*], or type selection number: 

사용하다

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

$JAVA_HOME현재 활성 버전에서 설정


허용 된 답변에서 @danzel이 언급했듯이 java이는 구성의 다른 부분이 아닌 실행 파일 에만 영향을 미칩니다 . 사용 update-java-alternatives가능한 경우.
Premek Brada

4

@muet의 답변을 바탕 으로이 작업이 원활하게 작동한다는 것을 알았습니다.

이것을 다음에 추가하십시오 ~/.bashrc:

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

별명에 추가 :

alias useJava8='yes | sudo apt-get install oracle-java8-set-default && source ~/.bashrc'
alias useJava7='yes | sudo apt-get install oracle-java7-set-default && source ~/.bashrc'

그럼 당신은 사용하여 동일한 쉘 내에서 전환 할 수 있습니다 useJava7또는useJava8


별칭을 영구적으로 만들려면 ~ / .bashrc에 넣을 수 있습니다. 자세한 내용은 여기 askubuntu.com/questions/17536/…
Konstantin Zyubin

E : oracle-java7-set-default 패키지를 찾을 수 없음
Prakash Pandey

다른 Java 버전을 설치, 사용 및 전환하는 가장 확실한 방법은 SDKMAN을 사용하는 것입니다! 여기를 참조하십시오 : sdkman.io/usage.html
brianjohnsen

최근에 JAVA_HOME을 설정하라는 또 다른 명령이 .bashrcexport JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
나왔습니다

3

자바 설정

update-alternatives다른 명령에 사용되는 심볼릭 링크를 관리하는 을 사용하여 명령 줄에서 기본 버전을 구성 할 수 있습니다 .

sudo update-alternatives --config java

결과는 다음과 같습니다.

There are 5 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1         manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          2         manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  4            /usr/lib/jvm/java-8-oracle/jre/bin/java          3         manual mode
  5            /usr/lib/jvm/java-9-oracle/bin/java              4         manual mode

Press <enter> to keep the current choice[*], or type selection number:

이제 기본값으로 사용할 번호를 선택할 수 있습니다. 컴파일러 ( javac), 문서 생성기 ( javadoc), JAR 서명 도구 ( jarsigner) 등과 같은 다른 Java 명령에 대해서도 수행 할 수 있습니다 . 다음 명령을 사용하여 사용자 정의하려는 명령 을 채울 수 있습니다.

sudo update-alternatives --config command

JAVA_HOME환경 변수 설정

Java 서버와 같은 많은 프로그램은 JAVA_HOME 환경 변수를 사용하여 Java 설치 위치를 결정합니다.

원하는 설치 경로를 복사 한 다음 Sublime Text 또는 자주 사용하는 텍스트 편집기를 사용하여 / etc / environment를여십시오.

sudo subl /etc/environment

이 파일의 끝에 다음 행을 추가하여 강조 표시된 경로를 자신의 복사 된 경로로 바꾸십시오.

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

파일을 저장하고 종료 한 후 다시로드하십시오 source /etc/environment..
이제 다음 명령을 실행하여 환경 변수가 설정되었는지 테스트 할 수 있습니다 echo $JAVA_HOME.. 방금 설정 한 경로를 반환합니다.

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