ubuntuで現在のJAVA_HOMEを見つける方法は?


回答:


84

ターミナルに入力し、

echo $JAVA_HOME

JAVA_HOME変数パスを表示します。

何も表示されない場合は、これで設定します

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

これは、JDKのタイプとバージョンによって異なります

表示するには、最初のコマンドに従ってください。

異なるJDKを使用するか、JDKを切り替えるには、この投稿に従ってください


「/ usr / lib / jvm / java-6-sun」となります。しかし、Java 7をインストールしました。「java -version」を使用してチェックすると、Javaバージョン「1.7.0_45」を提供します。Java(TM)SEランタイム環境(ビルド1.7.0_45-b18)Java HotSpot(TM)サーバーVM(ビルド24.45-b08、混合モード)
サミサチャトゥランガ

2
次に、JAVA_HOME変数を設定するための2番目のコマンドを実行します。注:JAVA_HOME doesn't make jdk default, it just makes JAVA_HOME variable set to a path & if you want to use different jdk installed on same machine then check my answer, I have edited it.
深める

あなたは、/ etc /環境でそれを設定する必要があります
ケイキ

@ Jax-Lしかし、今、JAVA_HOMEをエコーすると、「JAVA_HOME」と表示されます。指定したパスが表示されません... ???
サミタチャトゥランガ

2
エクスポートは、再起動するまで機能しません。または、.bashrcログインスクリプトにエクスポートを追加します。しかし、そのような環境変数を設定する正しい方法は、/ etc /環境にある
計器

34

あなたはJDK 1.6(Javaの6に相当)または新しいバージョンがインストールされている場合は、指定されたプログラムが必要ですjrunscriptあなたの中にPATH。これを使用して、対応するを見つけることができますJAVA_HOME。例:

$ jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
/opt/local/jdk1.7.0_76/jre

次のように環境変数を設定できます。

$ export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

JREにはが含まれていないjrunscriptため、JREだけでなくJDKをインストールした場合にのみ機能します。


1つのディレクトリをさらに深くする必要があることを理解するために、多くのことを経験しましたが、感謝します。
cnizzardini

15

別の移植可能なオプションは、次からJDKの絶対パスを抽出することですjavac

export JAVA_HOME=`type -p javac|xargs readlink -f|xargs dirname|xargs dirname`

絶対javacパスはdirname2回渡さ/bin/javacれ、末尾から削除されます。ディレクトリの完全な抽出は次のとおりです。

$ type -p javac
/usr/bin/javac

$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-8-oracle/bin/javac

$ dirname /usr/lib/jvm/java-8-oracle/bin/javac
/usr/lib/jvm/java-8-oracle/bin/

$ dirname /usr/lib/jvm/java-8-oracle/bin/
/usr/lib/jvm/java-8-oracle/

1
type -p javac|xargs readlink -f|xargs dirname|xargs dirname(エクスポート部分なしで)ディレクトリを設定せずに知ることができます。
ミーナマイケル

まさに私が探していたものです!素晴らしい答えです!
シルビウブルセア

7

update-alternativesメカニズムを考慮するには:

$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'

次のように環境変数を設定できます。

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"

JAVA_HOMEには末尾がまだあるので、これはまったく与えません/jre。あなたは試すかもしれませんexport JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
ジェームズ・ブルージー

7

コマンドを実行するだけ

 sudo update-alternatives --config java

それは次のようなものを与えます

Es gibt nur eine Alternative in Link-Gruppe java (die /usr/bin/java bereitstellt): /usr/lib/jvm/java-8-oracle/jre/bin/java

これから、Javaホームとして/ usr / lib / jvm / java-8-oracle /ができます。これをJAVA_HOME変数にエクスポートできます

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

エコー$ JAVA_HOMEで表示


1

Ubuntu LTS(14.04 / 16.04)でこれを使用します。

[ -L /etc/alternatives/java ] && 
  export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"


0

Java 9以降の場合:

この回答https://askubuntu.com/a/657468/963は、同封のNashorn JavaScriptエンジンNashornを使用してjava.homeシステムプロパティを出力します。Nashornは非推奨になっているため、代替手段はjshellJava 9で導入されたものを使用することです。

echo 'System.out.println(java.lang.System.getProperty("java.home"));' | jshell  -

私のUbuntu 18.10システムでは次のように出力されます:

/usr/lib/jvm/java-11-openjdk-amd64
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.