동일한 Linux 시스템의 다중 Java 환경


9

동일한 Linux 시스템에 여러 개의 동시 Java JDK 버전 을 설치하는 가장 효율적인 방법은 무엇입니까 ?

현재 Ubuntu 9.10 Karmic에 Java6 이로 드되어있는 동안 Java5가 필요합니다.

나는 이것을 위해 VM을 설정할 수 있다는 것을 알고 있지만 대안을 찾고 있습니다.

답변:


5

Sun 에서 Linux 바이너리 를 다운로드하면 원하는 디렉토리에 설치할 수 있습니다. 그런 다음 코드에서 해당 라이브러리를 참조하면 좋습니다.

이진 설치 프로그램을 사용하면 자체 이름이 지정된 하위 디렉토리 (예 : /usr/java/jdk1.5.0_)를 작성하므로 원하는만큼 다운로드 할 수 있으며 적절한 이름으로 정렬됩니다. 하위 명령.

기본 자바 바이너리는 / usr / bin에 존재하므로 "java"를 입력 할 때 자바가 아닌 다른 곳으로 접근하는 지점으로 바꾸려면 이전의 것을 / usr / bin에서 옮기십시오. 새 링크를 연결하십시오. 입력 which java하면 시스템의 기본 Java가 무엇인지 알려줍니다.

@jldupont : 동시 설치를 생각할 때 동일한 시스템에 여러 버전이 설치되어 있다고 생각합니다. 아직 업데이트되지 않은 회사의 수작업을 처리하기 위해 프로덕션 상자에 약 12 ​​가지 버전의 Java가 설치되어 있습니다.

그러나 "java"를 입력하면 '/ usr / bin'의 내용이므로 하나의 Java 버전 만 가져옵니다. '/usr/java/jdk1.5.1/ bin / java '는 시스템 기본값이 아닌 특정 Java 바이너리를 가져옵니다.


고맙지 만 동시 설치 가 필요 합니다. 어떻게해야합니까?
jldupont

감사. 이제 JDK5를 / opt에 설치하고 환경 변수를 설정하는 bash 스크립트를 작성했습니다 ... 작동하는 것처럼 보입니다. 나는 이것보다 더 고통 스러울 것이라고 생각했다!
jldupont

@ jldupont : 실제로 리눅스에 대해 좋아하는 것 중 하나입니다 ... 일반 파일을 덮어 쓰지 않습니다. 여러 버전의 Apache를 실행하는 많은 사람들을 알고 있습니다. 나 자신도 여러 버전의 Perl과 Java를 실행하는 경향이있다.
Satanicpuppy

1

oracle에서 .bin 파일을 다운로드하여 실행하면 폴더에 압축이 풀립니다. 이 폴더 (예 jdk1.6.0_32:)를 / usr / lib / jvm으로 옮긴 다음 setjavaJava 버전을 변경하는 데 사용 하는 스크립트로 이동하십시오 . export그러나 진술 때문에 같은 터미널에 머물러야합니다. 또한 일부 작은 jvm 도구가 설정되지 않았을 수 있지만 대부분의 경우 작동해야한다고 생각합니다. 또한 나는 쉘 멍청한 놈이므로 더 나은 가능성이 있다면 나를 수정하십시오 :-) 나를위한 코드는 다음과 같습니다

#!/bin/bash
# shouldnt be used in a loop, else the path may become too long

if [[ $(/usr/bin/id -u) -ne 0 ]]; then
    echo "Not running as root"
    exit
fi

case "$1" in
  6)
    echo "Setting Java version 6"
    export PATH=/usr/lib/jvm/jdk1.6.0_32/bin:$PATH
    export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_32
    sudo rm /usr/bin/java
    sudo rm /usr/bin/javac
    sudo rm /usr/bin/javadoc
    sudo rm /usr/bin/javah
    sudo rm /usr/bin/javap
    sudo rm /usr/bin/javaws
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/java /usr/bin/java
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javac /usr/bin/javac
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javadoc /usr/bin/javadoc
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javah /usr/bin/javah
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javap /usr/bin/javap
    sudo ln -s /usr/lib/jvm/jdk1.6.0_32/bin/javaws /usr/bin/javaws
    javac -version    
    java -version
    ;;
  7)
    echo "Setting Java version 7"
    export PATH=/usr/lib/jvm/java-7-openjdk/bin:$PATH
    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk/
    sudo rm /usr/bin/java
    sudo rm /usr/bin/javac
    sudo rm /usr/bin/javadoc
    sudo rm /usr/bin/javah
    sudo rm /usr/bin/javap
    sudo rm /usr/bin/javaws
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/java /usr/bin/java
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javac /usr/bin/javac
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javadoc /usr/bin/javadoc
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javah /usr/bin/javah
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javap /usr/bin/javap
    sudo ln -s /usr/lib/jvm/java-7-openjdk/bin/javaws /usr/bin/javaws
    javac -version
    java -version
    ;;
  *)
    echo "Usage: $0 {6|7}"

esac
exit 0

Hoffner 수출 명세서가 어떻게 작동하는지 잘 모르겠습니다. 그들은 시도 할 때 작동하지 않습니다.
SureshS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.