2009-03-19 2 views
71

Windowsでは、JAVA_HOMEは、すべての実行可能ファイルがに含まれ、JAVA_HOME/libsにはすべてデフォルトのjarライブラリが含まれるように、JDKインストールフォルダを指定する必要があります。Linux OpenJDK DebianベースのディストリビューションのJAVA_HOME envrionment変数の正しい対象は何ですか?

SunのJDKバンドルをダウンロードしてLinuxにインストールする場合も同じです。

しかし、私はKubuntuのデフォルトのOpenJDKパッケージを使用する必要があります。問題は、すべての実行可能ファイルが/usr/binに配置されていることです。しかし、瓶は/usr/share/javaに置かれています。彼らは同じJAVA_HOMEフォルダの下にないので、私はGrailsに問題があります。また、標準のJava構造を必要とする他のアプリケーションに問題があるかもしれません。

  1. 私が使用している場合:

    JAVA_HOME=/usr 
    

    任意のJava実行可能ファイルを使用するすべてのアプリケーションとスクリプトが標準的な手順call $JAVA_HOME/bin/executableを使用することができます。しかし、瓶は別の場所にあるので、それらは常に見つかるとは限りません(例:grailsではClassDefNotFoundnative2asciiにしています)。一方

  2. 、私が使用している場合:

    JAVA_HOME=/usr/share/java 
    

    のJava実行可能ファイル(javajavacなど)のいずれも見つからないことができます。

したがって、DebianベースのLinuxでJAVA_HOME変数を正しく処理する方法は何ですか?あなたの助けのための

おかげで、 ルイス

+2

モッズがこの「役に立つ」質問を「話題外」であるとは考えていないとは思えません! – HDave

答えて

87

は指摘している:ユーザーがシステムのデフォルトのJDKを変更

JAVA_HOME=/usr/lib/jvm/default-java 

この方法であれば、JAVA_HOMEはまだ動作します。

default-javaは、現在のJVMへのシンボリックリンクです。

+5

Debian 7にこのようなリンクはないようです。 – a1an

+3

RHEL5.10では/ usr/lib/jvm/java – Brian

+1

私は/ usr/lib/jvm/java-7-openjdk-amd64を使用しました –

-1

は私の正しいターゲットは常に日からそれをダウンロードして、ちょうどそのようにインストールすることでした。

しかし、Debianがインストールする奇妙な方法を採用したいのであれば、Javaとjavacのバイナリが置かれている場所のすぐ上の親ディレクトリが最適です。

(あなたはパスで指定する場合ので、それは$ JAVA_HOME/binにあります) (だからあなたの場合には、それは次のようになり... $ JAVA_HOME /株と$ JAVA_HOMEが、/ usrだろうか?)

え、それは右に聞こえません...

私もこの答えを聞いて興味があります!

+0

debianを使用する場合は、実際にはdebian構造体を使用する必要があります。それ以降のシステムアップデートでは、システムが壊れてしまいます。 – RichieHH

0

私は通常、JAVA_HOME環境変数を持っていません。 Javaはそれ自体を設定できます。内部java java.homeシステムプロパティが利用可能になるはずです。

+0

私は通常それも持っていません。しかし、もし私がそれを設定しなければ、grailsはJAVA_HOMEがそこには存在せず、異常終了すると不平を言う。 –

+0

蟻は文脈であるdebianでもそれを必要とします – RichieHH

6

標準のUbuntuインストールでは、さまざまなJavaバージョンを/usr/lib/jvmに入れているようです。 javac、あなたのパスにあるjavaがこれにソフトリンクします。

JAVA_HOME環境変数を設定し、パス上に新しいJava binがあることを確認している限り、好きな場所に独自のJavaバージョンをインストールすることは問題ありません。

これを実行するための簡単な方法は、アップグレードやバージョンを切り替えたい場合にのみ、ディレクトリを変更する必要がなるようにJavaホームは、ソフトリンクとして存在することですと、このポイント - 例えば:

/usr/bin/java --> /opt/jdk/bin/java, 

/opt/jdk --> /opt/jdk1.6.011 
最終的にはほとんどのスティーブ・B.のようにやっている(Grailsのが今スムーズに動作します)私のために働いた何
+0

DebianでUbuntuの解決策を推奨するのは危険です。彼らは変わることができます。 – RichieHH

+3

リクエスタはKubuntuを使用していると言っていますので、Ubuntuソリューションは問題ありません。 –

-1

update-alternativesコマンドが何をしているかを確認してください(素晴らしい人がいます...)。

まもなく、java-sun-1.4とjava-opensouce-1.0があるとどうなりますか?どちらが「java」ですか?それは、Debian "は/ usr/binに/ javaの" シンボリックリンクと "/usr/bin/java-sun-1.4は" 選択肢がされていると、 "は/ usr/binに/ javaの"

編集: リチャードが言ったように、update-alternatives十分ではありません。実際にはupdate-java-alternativesを使用する必要があります。詳細情報:

https://help.ubuntu.com/community/Java

+0

update-alternativesはありません十分な。それはupdate-java-alternativesである必要があります – RichieHH

+0

@リチャード:はい、留意してください。私は初めてそれについて頭を悩まし、Ubuntuのドキュメンテーションを見つけました。ありがとう! – elcuco

0

もJAVA_LIB変数を設定してみてください。

0

私が覚えている限り、私はupdate-alternativesの代わりにupdate-java-alternativesスクリプトを使用しました。そして、JAVA_HOMEを正しく設定しました。

1

JARファイルに問題が見つからない場合は、CLASSPATHがこれらのファイルの場所を含むように設定されていることを確認してください。しかし、私はCLASSPATHがしばしば異なるプログラムのために異なって設定される必要があり、しばしば個々のプログラムのために一意に設定する何かであることが分かります。

0
あなたの問題を解決し、また、単に一般的に良いが、どのように-するUbuntuの上でのOracleのJava 7をインストールするためにここで見つけることができます

更新答:あなたは選択肢を使用している場合http://www.wikihow.com/Install-Oracle-Java-on-Ubuntu-Linux

48

は、あなたがに基づいてJAVA_HOMEを設定することができますこのようなシンボリックリンクのjava:私はUbuntuの中のOpenJDK-6-JREとOpenJDKの-6-jreを-ヘッドレスパッケージと同様の問題を発見した

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

私は "javac"ではなく "java"を持っている以外は動作します。 –

+3

これは私のために働きます:JAVA_HOME = $(readlink -f/usr/bin/java | sed "s:/ jre/bin/java ::") – dpnsan

+3

賢い解決策は、JAVA_HOMEを使って長年の頭痛を解決します。異なるオペレーティングシステム上の異なる場所に移動します。 – Datageek

1

私の問題は、openjdk-6-jreとopenjdk-6-jre-headlessパッケージをパージして再インストールすることで解決しました。代替は、openjdk-6-jreとopenjdk-6-jre-headlessパッケージの新規インストール時にのみ更新されます。

aptitude purge openjdk-6-jre openjdk-6-jre-headless # to ensure no configuration exists 
aptitude install --without-recommends openjdk-6-jre # Installing without some extras 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
Reading extended state information 
Initializing package states... Done 
The following NEW packages will be installed: 
    ca-certificates-java{a} java-common{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libcups2{a} libflac8{a} libgif4{a} libnspr4-0d{a} libnss3-1d{a} libogg0{a} libpulse0{a} libsndfile1{a} libvorbis0a{a} libvorbisenc2{a} libxi6{a} libxtst6{a} 
    openjdk-6-jre openjdk-6-jre-headless{a} openjdk-6-jre-lib{a} tzdata-java{a} 
The following packages are RECOMMENDED but will NOT be installed: 
    icedtea-6-jre-cacao icedtea-netx ttf-dejavu-extra 
0 packages upgraded, 21 newly installed, 0 to remove and 119 not upgraded. 
Need to get 0B/34.5MB of archives. After unpacking 97.6MB will be used. 
Do you want to continue? [Y/n/?] 
Writing extended state information... Done 
Selecting previously deselected package openjdk-6-jre-lib. 
(Reading database ... 62267 files and directories currently installed.) 
Unpacking openjdk-6-jre-lib (from .../openjdk-6-jre-lib_6b24-1.11.5-0ubuntu1~10.04.2_all.deb) ... 
... 
Processing triggers for man-db ... 
Setting up tzdata-java (2012e-0ubuntu0.10.04) ... 
... 
Setting up openjdk-6-jre-headless (6b24-1.11.5-0ubuntu1~10.04.2) ... 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/java to provide /usr/bin/java (java) in auto mode. 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/keytool to provide /usr/bin/keytool (keytool) in auto mode. 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/pack200 to provide /usr/bin/pack200 (pack200) in auto mode. 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode. 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in auto mode. 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in auto mode. 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/orbd to provide /usr/bin/orbd (orbd) in auto mode. 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/servertool to provide /usr/bin/servertool (servertool) in auto mode. 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in auto mode. 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/lib/jexec to provide /usr/bin/jexec (jexec) in auto mode. 
Setting up openjdk-6-jre (6b24-1.11.5-0ubuntu1~10.04.2) ... 
update-alternatives: using /usr/lib/jvm/java-6-openjdk/jre/bin/policytool to provide /usr/bin/policytool (policytool) in auto mode. 
... 

あなたはさまざまなJavaバイナリのリンクを設定するために実行されているupdate-alternatives上で見ることができます。以下は

はパージした後のインストールのサンプルです。

このインストール後、/usr/binのリンク、/etc/alternativesのリンク、および各バイナリのファイルが/var/lib/dpkg/alternativesにもあります。

ls -l /usr/bin/java /etc/alternatives/java /var/lib/dpkg/alternatives/java 
lrwxrwxrwx 1 root root 40 2013-01-16 14:44 /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk/jre/bin/java 
lrwxrwxrwx 1 root root 22 2013-01-16 14:44 /usr/bin/java -> /etc/alternatives/java 
-rw-r--r-- 1 root root 158 2013-01-16 14:44 /var/lib/dpkg/alternatives/java 

パージせずにインストールしてください。

aptitude remove openjdk-6-jre 
aptitude install --without-recommends openjdk-6-jre 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
Reading extended state information 
Initializing package states... Done 
The following NEW packages will be installed: 
    ca-certificates-java{a} java-common{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libcups2{a} libflac8{a} libgif4{a} libnspr4-0d{a} libnss3-1d{a} libogg0{a} libpulse0{a} libsndfile1{a} libvorbis0a{a} libvorbisenc2{a} libxi6{a} libxtst6{a} 
    openjdk-6-jre openjdk-6-jre-headless{a} openjdk-6-jre-lib{a} tzdata-java{a} 
The following packages are RECOMMENDED but will NOT be installed: 
    icedtea-6-jre-cacao icedtea-netx ttf-dejavu-extra 
0 packages upgraded, 21 newly installed, 0 to remove and 119 not upgraded. 
Need to get 0B/34.5MB of archives. After unpacking 97.6MB will be used. 
Do you want to continue? [Y/n/?] 
Writing extended state information... Done 
Selecting previously deselected package openjdk-6-jre-lib. 
(Reading database ... 62293 files and directories currently installed.) 
Unpacking openjdk-6-jre-lib (from .../openjdk-6-jre-lib_6b24-1.11.5-0ubuntu1~10.04.2_all.deb) ... 
... 
Processing triggers for man-db ... 
... 
Setting up openjdk-6-jre-headless (6b24-1.11.5-0ubuntu1~10.04.2) ... 

Setting up openjdk-6-jre (6b24-1.11.5-0ubuntu1~10.04.2) ... 
... 

ご覧のとおり、update-alternativesはトリガーされません。

このインストール後、/var/lib/dpkg/alternativesにはJavaバイナリのファイルはなく、/etc/alternativesにはリンクがなく、/usr/binにはリンクがありません。

/var/lib/dpkg/alternativesのファイルを削除すると、update-java-alternativesも破損します。

0

のUbuntu 12.04この作品...のFedoraユーザーのためのアップデートとして

JAVA_HOME =は/ usr/libに/ JVM/javaの-6-OpenJDKの-I386/JRE

0

、現在のjavaディレクトリを設定する代替手段 は/ usr/javaの/デフォルト

ので、あなたは、/ usr/javaの/デフォルトにあなたのJAVA_HOMEを設定する必要があり、常にあなたのクラスパスに代替海流の選択を

HTHを持っています!

関連する問題