同じLinuxマシン上の複数のJava環境


9

同じLinuxマシンに複数の同時 Java JDKバージョンをインストールする最も効率的な方法は何ですか?

現在のUbuntu 9.10 KarmicにはJava6がロードされていますが、Java5が必要です。

私はこれのためにVMをセットアップできることを知っていますが、代替案を探しています。

回答:


5

LinuxバイナリをSunからダウンロードした場合、好きなディレクトリにインストールできます。次に、これらのライブラリをコードで参照するだけでよいのです。

バイナリインストーラーを使用すると、独自の名前付きサブディレクトリ(例では/usr/java/jdk1.5.0_)が作成されるため、必要な数だけダウンロードでき、適切に名前が付けられた場所に配置されます。サブディレクトリ。

メインのJavaバイナリは/ usr / binにあるため、「java」と入力してJavaにアクセスするように置き換えたい場合は、Javaにアクセスし、/ usr / binから古いものを移動するだけです。 、新しいリンクをそこにリンクします。入力which javaすると、システムのデフォルトのJavaが何であるかがわかります。

@jldupont:同時インストールについて考えるとき、同じマシンに複数のバージョンがインストールされていると思います。私の方法ではそれが絶対に得られます。まだ更新されていない企業からのお下がりを処理するために、私は約12バージョンのJavaを製品ボックスにインストールしています。

ただし、「java」と入力すると、「/ usr / bin」にあるので、1つのバージョンのjavaしか取得できません...「/ usr / java / jdk1.5.1 /」のように入力する必要があります。 bin / java 'は、システムのデフォルトではない特定のJavaバイナリを取得します。


ありがとうございますが、同時インストールが必要です。それ、どうやったら出来るの?
jldupont 2010

ありがとう。/ optにJDK5をインストールし、環境変数を設定するためのbashスクリプトを自分で作成しました。動作するようです。これ以上苦しいと思いました!
jldupont 2010

@jldupont:実はそれがLinuxのお気に入りの1つです...邪魔になるレジストリがないので、同じものを100回インストールすることができ、確認している限り問題ありません。一般的なファイルを上書きしないようにします。(たとえば)複数の異なるバージョンのApacheを実行している多くの人を知っています。私自身、PerlとJavaの複数のバージョンを実行する傾向があります。
Satanicpuppy 2010

1

oracleから.binファイルをダウンロードして実行すると、それ自体がフォルダーに抽出されます。このフォルダー(例jdk1.6.0_32:)を/ usr / lib / jvmに移動してから、setjavaJavaバージョンの変更に使用するスクリプトを実行します。exportただし、ステートメントのため、同じターミナルにとどまる必要があります。また、いくつかの小さなjvmツールが設定されていない可能性がありますが、ほとんどの場合は機能するはずです。また、私はシェルnoobなので、より良い可能性がある場合は修正してください:-)私のコードは次のとおりです。

#!/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 exportステートメントがどのように機能するかわかりません。私が試してもうまくいきません。
SureshS 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.