기본 Java 버전을 설정하는 방법은 무엇입니까?


124

질문에 언급 된 모든 지시 사항을 따랐 지만 마지막 부분에 문제가 있습니다.

실제로 버전 6.22의 Java가 있으며 버전 6.30으로 업데이트하고 싶습니다.

따라서 추출 된 디렉토리 java-6-oracle를 옮긴 후 /usr/lib/jvm무엇을 해야할지 모르겠습니다. 위의 답변에서 지적한 스크립트가 java 5에서 java 6으로 업데이트되기 때문입니다.

명확성을 위해 lsin dir을 수행하면 여기에 출력됩니다 /usr/lib/jvm.

$ ls -l /usr/lib/jvm
total 8 
lrwxrwxrwx  1 root root   14 2011-07-12 15:18 default-java -> java-6-openjdk
lrwxrwxrwx  1 root root   14 2011-07-12 12:19 java-1.6.0-openjdk -> java-6-openjdk 
drwxr-xr-x 10 root root 4096 2012-04-12 12:06 java-6.31-oracle 
drwxr-xr-x  7 root root 4096 2012-02-24 14:43 java-6-openjdk

지금 어떻게해야합니까?


추가 된 부분

@fossfreedom의 제안에 따라 어쨌든 스크립트를 실행하고 실제로 Java 버전을 업데이트했습니다.

실제로 명령 java -version출력을 실행 하면 다음과 같습니다.

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

여전히 문제있습니다 .Irun javac -version을 사용하면 이전 버전이 설치됩니다.

$ javac -version
javac 1.6.0_22

링크 에서 테스터를 사용하면 버전이

Java Version 1.6.0_22 from Sun Microsystems Inc.

무슨 일이야?

Java Runtime Environment가 업데이트 된 것 같지만 브라우저 용 Java 컴파일러 및 Java 플러그인은 업데이트되지 않았습니다.

업데이트하려면 어떻게해야합니까?


다른 추가 부품

sudo update-alternatives --config java 다음 출력을 반환합니다

$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      manual mode

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

이는 JRE가 버전 6.31로 올바르게 업데이트되었으며 Java 컴파일러 및 Java 브라우저 플러그인에 문제가 있다는 사실과 관련이 있습니다.

어떤 아이디어?


@fossfreedom Java 5에서 6으로 업로드하기 위해 명시 적으로 작성된 것이 좋지 않다고 생각했기 때문에 시도하지 않았습니다. 어쨌든해야합니까?
Matteo

1
hmmm-아마도 webupd8 스크립트가 0.5b라는 것을 혼동 할 수 있습니까? 그것은 스크립트의 버전입니다-그것은 자바 버전을 참조하지 않습니다. 시도 해봐. 스크립트를 실행할 때 창의 모습에 대한 스크린 샷을 볼 수 있습니다.
fossfreedom

@ fossfreedom 그렇습니다. 완전히 혼란 스럽습니다 .DI가 스크립트를 실행했습니다! 문제의 수정 사항을 확인하십시오! 도와 주셔서 감사합니다 ..
Matteo

얼마나 이상한가? 어쨌든-바로 아래의 답변을보십시오- sudo update-alternatives예제에 따라 가능해야합니다 .
fossfreedom

@fossfreedom 다시 질문을 업데이트!
Matteo

답변:


103

첫 번째 질문을 다시하십시오 :

아마도 webupd8 스크립트가 0.5b라는 것을 혼동 할 수 있습니다. 그것은 스크립트의 버전입니다-그것은 자바 버전을 참조하지 않습니다.

javac 버전 설정에 추가.

javac 컴파일러의 경로를 명시 적으로 제공해야한다고 생각합니다.

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-6.31-oracle/bin/javac" 1

뒤에 :

sudo update-alternatives --config javac

자바 크롬 플러그인 설정과 관련하여.

마스터 질문 :

Oracle JDK 6을 어떻게 설치합니까?

폴더 구조가 약간 다르기 때문에 링크 명령은 다음과 같아야합니다.

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/

자체적으로 이것은 컴파일러를 변경합니다-내 Java 시스템에서 82 인 모든 Java 관련 대안을 전환하는 것을 처리하는 update-java-alternatives에 대한 아래 답변을 참조하십시오.
그렉

55

참조 ; 운영

sudo  update-java-alternatives --list

이름과 디렉토리로 시스템의 모든 Java 설치를 나열한 다음 실행

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

사용할 JRE / JDK를 선택합니다.

각 Java 태스크마다 다른 JDK / JRE를 사용하려는 경우 한 번에 하나의 Java 실행 파일을 구성하기 위해 업데이트 대체를 실행할 수 있습니다. 당신은 실행할 수 있습니다

sudo  update-alternatives --config java[Tab]

구성 할 수있는 Java 명령 (java, javac, javah, javaws 등)을 보려면 그리고

sudo  update-alternatives --config [javac|java|javadoc|etc.]

해당 Java 작업 / 명령을 특정 JDK / JRE에 연결합니다.

일부 응용 프로그램에 대해 JAVA_HOME을 설정해야 할 수도 있습니다. 이 답변 에서 사용할 수 있습니다

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

JRE의 경우

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

JDK를 위해.


25

패키지와 패키지 update-java-alternatives에서 사용 java-common하는 *.jinfo파일 에서 명령을 살펴 봐야한다고 생각 합니다. 이를 통해 Java 설치 (JDK, JRE, ...에 관계없이) 사이를 완전히 전환 할 수 있어야합니다.


2
나는 시도 update-java-alternatives하고 java -version정확하지만,에있는 링크는 $JAVA_HOME내가 한 수동,하지만 난에없는 뭔가가 있는지 궁금 것을 변경 ... 아직도 잘못 update-java-alternatives그런 측면에서가.
Alexis Wilke

7

우분투 / 리눅스에서는 다음을 사용하여 Java 버전을 전환 할 수 있습니다

update-alternatives --config java

그러나 이전에는 버전을 설치해야합니다.

이 스크립트 (./install-java.sh)를 사용하여 여러 JVM을 설치할 수 있습니다.

#!/bin/sh
(
lookforJdks=$PWD
echo "Directory: $lookforJdks"
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo "$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo "$jdks" | tr '\n' ',' | cut -d',' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner java javac javadoc javah javap jconsole \
 jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
 schemagen serialver wsgen wsimport xjc jvisualvm jmc; do sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)

echo "RUN update-alternatives --config java"

이 스크립트를 JVM의 압축을 푼 폴더에 넣고 다음을 실행하십시오.

/opt/install-java.sh

다음 사용 :

update-alternatives --config java

1

javac javaws javadoc 또는 기타 Java 관련 명령에 대한 대안을 수동으로 설정하려는 경우 해당 명령을 java 대체 문자의 슬레이브로 만들 수 있습니다.

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0_74/bin/java" 0 --slave "/usr/bin/javadoc" "javadoc" "/opt/jdk1.8.0_74/bin/javadoc"


update-alternatives: updating alternative /opt/jdk1.8.0_74/bin/java because link group java has changed slave links


:/opt/jdk1.8.0_74$ sudo update-alternatives --display java

java-자동 모드 링크 최고 버전은 /opt/jdk1.8.0_74/bin/java 링크입니다. 현재 링크는 /opt/jdk1.8.0_74/bin/java를 가리 킵니다. java는 / usr / bin / java입니다. javadoc은 / usr / bin입니다. / javadoc /opt/jdk1.8.0_74/bin/java-우선 순위 0 슬레이브 javadoc : /opt/jdk1.8.0_74/bin/javadoc

jdk가 설치된 디렉토리로 /opt/jdk1.8.0_74/를 변경하십시오.


0

/etc/environment텍스트 편집기에서 열고 다음 행을 추가하십시오.

JAVA_HOME="usr/lib/jvm/open-jdk 

-Java 경로가 다를 수 있습니다.
다음 명령을 실행하여 source를 사용하여 변수를로드하십시오.

source /etc/environment

그런 다음이 명령을 실행하여 변수를 확인하십시오.

echo $JAVA_HOME

이 경로를 설정 한 상태에서 다음 명령을 실행하십시오.

sudo  update-java-alternatives --list

기본 Java 버전을 선택하십시오.

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