同じLinuxマシンに複数のconcurrent Java JDKバージョンをインストールする最も効率的な方法は何ですか?
現在のUbuntu9.10 KarmicにはJava6がロードされていますが、Java5が必要です。
このためにVM)を設定できることはわかっていますが、別の方法を探しています。
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」のように入力する必要があります。
Oracleから.binファイルをダウンロードして実行すると、それ自体がフォルダーに抽出されます。このフォルダを移動します(例:jdk1.6.0_32
)/ usr/lib/jvmに移動し、次にスクリプトsetjava
を使用してJavaバージョンを変更します。export
statementsのため、そのままにしておく必要がありますただし、同じ端末です。一部の小さな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