2009-07-13 44 views
48

JAVA_HOMEディレクトリを見つけるために使用できるlinuxコマンドはありますか?私は環境変数( "env")を出力しようとしましたが、ディレクトリを見つけることができません。LinuxのJAVA_HOMEディレクトリ

答えて

43

echo $JAVA_HOME設定されている場合、値が印刷されます。ただし、起動スクリプトで手動で設定しなかった場合は、おそらく設定されていません。

which javaを試しても問題が見つからない場合は、マシンにJavaがインストールされていないか、少なくともあなたのパスにJavaがインストールされていない可能性があります。あなたが持っているLinuxディストリビューションと、root権限を持っているかどうかによって、http://www.java.comにアクセスして、必要なバージョンをダウンロードすることができます。次に、このディレクトリを指すようにJAVA_HOMEを設定できます。これは単なる規約であり、javaがインストールされているかどうかを判断するためには使用しないでください。端末上

+3

JAVA_HOMEは、もはやLinuxシステムで定義され、推奨されていません。 –

+1

@PeterQuiringあなたはその声明のためにあなたのソースを挙げるべきです。あなたは間違っています。 – harschware

+1

@harschware Ubuntuをインストールすると、JDKがインストールされていても、JAVA_HOMEは設定されません。/usr/share/doc/openjdk-8-jre-headless/JAVA_HOMEも読んでください。JAVA_HOMEはもはや必要なくなっているはずです(レガシー)。 –

2

、タイプ:

を「$ JAVA_HOMEを」エコーあなたは何を取得していない場合は、ご使​​用の環境変数JAVA_HOMEが設定されていません。あなたは "locate java"を使ってJavaのインストールがどこにあるのかを試してみることができます。

2

あなたは

  • あなたのJAVA_HOMEを設定しましたKornシェルおよびBashシェル:輸出JAVA_HOME = JDK-インストール先ディレクトリ
  • Bourneシェル:JAVA_HOME = JDKインストール・ディレクトリ;輸出JAVA_HOME
  • Cシェル: setenv JAVA_HOME JDKインストール-dirの
+0

セミコロンがありませんか?トム –

+0

、ました'/ usr/lib/jvm/java-7-openjdk-amd64 /'を実行します。 –

29

私はこれが遅れている知っているが、このコマンドを使用し

用のJavaを見つけるためには/ usr /ディレクトリを検索あなたは、Mac上にある場合FYI

/usr/lib/jvm/java-6-openjdk 
/usr/lib/jvm/java-1.6.0-openjdk 

から

sudo find /usr/ -name *jdk 

結果は、現在、JAVA_HOMEは、あなたがMacのあなたに$(dirname $(dirname $(readlink -f $(which javac))))

を実行することができます

Linuxの/System/Library/Frameworks/JavaVM.framework/Home

+1

私は – bulltorious

+1

をインストールしていたのOracle VMを見つけること sudoを見つける/ -name * javacの を使用していたおかげであなたは私のパスとして 'sudoを見つけることは/ usr/-name * JDK *'をしようとする場合があります固定 – JVE999

51

に位置しています実行することができます$(dirname $(readlink $(which javac)))/java_home

私は窓についてはよく分からないが、私はwhere javacは、使用環境変数の値を表示するには

+6

これは素晴らしい解決策ですが、Javaが複数のリンクで設定できるので、readlinkに標準的なフラグを使うことを忘れないでください。 '$(dirname $(dirname $(readlink -f $(javac))))' on '代わりにLinux –

+0

ありがとう@ MatthewO'Riordan! linuxコマンドの '-f'フラグを追加しました。 macの 'readlink'は' GNU'バージョンではないので、私はスクリプトのmacバージョンで '-f'を除外しました。 brewを介してインストールされた 'readlink'の' GNU'版を持っているMacユーザーは '-f'を使うことができます。 – jsdevel

+0

これは、異なるJavaバージョンを管理するために/ etc/alternativesを使用する人に特に適しています。 – gilbertpilz

8

あなたはかなり近づく想像:

はあなたにとても$ VARIABLE

をエコー場合は、次のようになります。

エコー$ JAVA_HOME

あなたはそれがsettedていない場合は、あなたの.bashrcファイルに追加することができます。

輸出JAVA_HOME = $(READLINK -fは/ usr/binに/ javaの| sed "s:bin/java ::")

パッケージを更新すると動的に変更されます。

+0

はFedoraとUbuntuで正常に動作します –

+0

安全でないsedコマンド:/ usr/bin/javaが '/ usr/bin/java-8/bin/java'へのシンボリックリンクだったらどうなりますか? '/ usr/-8/bin/java'という出力が得られます。 – GKFX

+0

素晴らしいソリューション! jreをjreの代わりにhomeとして使いたい場合は、readlink -f/usr/bin/java | sed "s:jre/bin/java ::" – cyberoblivion

7

...

$ echo $JAVA_HOME 
$ # I am not lucky... 

あなたはロードされたクラスからそれを推測することができます。

$ java -showversion -verbose 2>&1 | head -1 
[Opened /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/lib/rt.jar] 

このメソッドを使用すると、複数のインストールがある場合に使用正しいjdk/jreを見つけることが保証されます。

またはstraceを使用して:

$ strace -e open java -showversion 2>&1 | grep -m1 /jre/ 
open("/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/bin/../lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) 
11

ちょうど別の解決策、この1のクロスプラットフォーム(javaを使用しています)、およびJREの場所にあなたを指します。

java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home' 

出力javaの現在の設定がすべて、とはjava.homeと呼ばれるものを見つけました。

+1

JAVA_HOMEを見つける方法はたくさんありましたが、これは最高のものだと思います!言及してくれてありがとう! – ricovox

+0

それは助けてよかった! –

+1

JDK1.7(IIRC)での作業が始まったと言えるでしょう。その前に、 'jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty(" java.home "));''を呼び出す必要がありました。どちらの場合も、 'クロスプラットフォーム'の側面では、 '/ usr/bin/env'の前に置くことをお勧めします。 – Moreaki

1

はここでstdoutにディレクトリだけをつかんで、改善ません:

java -XshowSettings:properties -version 2>&1 \ 
    | sed '/^[[:space:]]*java\.home/!d;s/^[[:space:]]*java\.home[[:space:]]*=[[:space:]]*//' 
+0

少し短いですが、2つではなく3つのフォークでは、次のようになります: '$ {JAVA_HOME:= $(/ usr/bin/env java -XshowSettings:properties -version 2>&1 | grep" java.home "| -d2 = "-f2"} – Moreaki

+0

パスを直接エクスポートする必要がある場合、 'export $(/ usr/bin/env java -XshowSettings:properties -version 2>&1 | grep" java.home "| sed -e 's/java.home/JAVA_HOME /; s/// g;') ' – Moreaki

関連する問題