web-dev-qa-db-ja.com

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

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

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

このためにVM)を設定できることはわかっていますが、別の方法を探しています。

9
jldupont

linux binary をSunからダウンロードすると、好きなディレクトリにインストールできます。次に、これらのライブラリをコードで参照するだけで、問題ありません。

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

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

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

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

5
Satanicpuppy

Oracleから.binファイルをダウンロードして実行すると、それ自体がフォルダーに抽出されます。このフォルダを移動します(例:jdk1.6.0_32)/ usr/lib/jvmに移動し、次にスクリプトsetjavaを使用してJavaバージョンを変更します。exportstatementsのため、そのままにしておく必要がありますただし、同じ端末です。一部の小さなjvmツールも設定されていない可能性がありますが、ほとんどの場合は機能するはずです。また、私はShell 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
1
Konrad Höffner