UbuntuでOracleのJavaをデフォルトのJavaとして設定するにはどうすればよいですか?


回答:


175

私は行を入れました:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

私の~/.bashrcファイルで。

/usr/lib/jvm/java7-oracleを指すシンボリックリンクである必要があり/usr/lib/jvm/java-7-oracle-[version number here]ます。

これがシンボリックリンクである理由は、JVMの新しいバージョンが存在する場合に.bashrcファイルを更新する必要がないため、自動的に新しいバージョンを指す必要があるためです。

JAVA_HOME環境変数をシステムレベルでグローバルに設定する場合は、/etc/environmentファイルに設定を使用する必要があります。


4
または、Oracle(Sun)JDKの代わりにOpenJDKを使用している場合は、/ usr / lib / jvm / java-1.6.0-openjdk-amd64。
pm_labs 2012年

7
export JAVA_HOME = / usr / lib / jvm / default-java /
noomz

@noomz default-javaが存在しない場合、どうやってそれを得るのですか?
AHungerArtist 2013年

@AHungerArtist openjdkまたは他の公式にサポートされているUbuntuパッケージをインストールすると、このことがわかります。残念ながら、webupd8 / java ppaを使用するOracle JDKではサポートされていません。実際、oracle-java7-set-defaultパッケージが何をするかは、私には完全に不明確です。
Melvyn

ファイルのどこに配置しますか?
Czipperz 2015年

166

グローバルかつシステムレベルで変更する場合は、

/etc/environment

この行を追加します。

JAVA_HOME=/usr/lib/jvm/java-7-oracle

27
+1これは、推奨される方法ですhelp.ubuntu.com/community/EnvironmentVariables
daniel kullmann 2013

@metdos上記の答えはグローバルまたはシステムレベルではありませんか?
Android Killer

1
@AndroidKillerダニエル・カルマンが指摘したリンクを確認しましたか?
メドス2013年

@metdosはうまく機能しますが、変数の参照は機能しません... $JAVA_HOMEこのように使用すると解決しませんPATH=$JAVA_HOME/bin。再起動を試みましたが、効果がありません。このファイルまたは自分のプロファイルに、exportまたはそのset JAVA_HOMEどちらかを置く必要がありますか?
ラフィアン2013年

@Raffianさまざまなコーナーケースについてはわかりませんが、このようにして完全に機能しました。詳細については、help.ubuntu.com
community /

53

OracleのJava SE開発キットをシステムのデフォルトのJavaとして設定するには、ここから最新のJava SE開発キットをダウンロードして、ファイルシステムの好きな場所にディレクトリを作成します。たとえば/usr/java、ダウンロードしたファイルをそのディレクトリに抽出します。

$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java

次に、JAVA_HOME環境変数を設定します。

$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000

Oracleのjavaがデフォルトのjavaとして設定されていることを確認します。

$ update-alternatives --config java

あなたはこのようなものを手に入れます:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /opt/java/jdk1.8.0_05/bin/java                  20000     auto mode
  1            /opt/java/jdk1.8.0_05/bin/java                  20000     manual mode
  2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode

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

左側の数字の前にあるアスタリスクに注意してください。正しい数字が設定されていない場合は、数字を入力してEnterキーを押し、正しい数字を選択してください。今あなたのJavaをテストします:

$ java -version

次のようなものが表示された場合は、問題ありません。

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)

これを行うには、root権限が必要か、sudoersグループに属している可能性があることにも注意してください。私はこのソリューションをubuntu 12.04とDebian wheezyの両方でテストしましたが、どちらでも機能します。


1
はい、このソリューションは、受け入れられているソリューションよりもはるかにクリーンです。
シモーネチッタディーニ2015

感謝を表す@JayminGajjarコメントは必要ありません。このウェブサイトで良い質問/回答をサポートするメカニズムは、それらに賛成することです。あなたがそれを行うが、コメントに十分に持っているのに十分な評判を保有していない場合は、どのようなシステムとどのようなOSは、このソリューションが作業などをテストし、あなた見つけた上のようなことでいくつかの有用な情報を含めるようにしてみてください
バラクーダ

@Barracuda私はすでに投票しました、あなたは情報について正しいです、それは私のためにUbuntu 16.10 64ビットサーバーOSで動作しました:)
Jaymin Gajjar

20

この環境変数をすべてのユーザーが利用でき、システムの起動時に必要な場合は、次の行を/etc/profile.d/java.shに追加できます(必要に応じて作成します)。

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

次に、ターミナル実行で:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

私の2番目の質問は、java-6-sunまたはjava-6-sun-1.6.0.24を指しているのでしょうか?

java-7-oracle最新のインストールされたものへのシンボリックリンクを常に指す必要があります(UbuntuリポジトリからJavaをインストールし、oracle.comから入手できるダウンロードからJavaをインストールしたと想定)。



10

何らかの開発を行っている場合は、JDK(Java Development Kit)を指定する必要があります。それ以外の場合は、JRE(Javaランタイム環境)を指定できます。

JDKには、JREが持つすべてのものが含まれています。Javaプログラムを実行しているだけの場合は、JREまたはJDKのいずれかを指定できます。

JAVA_HOME 現在使用しているJavaに基づいて設定する必要があります。 readlink現在のJavaのシンボリックリンクの値を出力し、sedそれをJREディレクトリに調整します。

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

JAVA_HOMEをJDKに設定する場合は、1つ上のフォルダに移動する必要があります。

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


5

これを参照してください。走る

sudo  update-java-alternatives --list

マシン上のすべてのJavaインストールを名前とディレクトリでリストアップして実行します

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

使用するJRE / JDKを選択します。

Javaタスクごとに異なるJDK / JREを使用する場合は、update-alternativesを実行して、一度に1つの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の場合。


別のアプローチ:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
Xdg 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.