Linux OpenJDK Debian ベースのディストリビューションの JAVA_HOME 環境変数の正しいターゲットは何ですか?

StackOverflow https://stackoverflow.com/questions/663658

質問

Windowsでは、 JAVA_HOME JDK インストール フォルダーを指す必要があります (つまり、 JAVA_HOME/bin すべての実行可能ファイルが含まれており、 JAVA_HOME/libs すべてのデフォルトが含まれています jar ライブラリ)。

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

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

  1. 私が使用する場合:

    JAVA_HOME=/usr
    

    Java 実行可能ファイルを使用するすべてのアプリケーションとスクリプトは、標準の手順を使用できます。 call $JAVA_HOME/bin/executable. 。ただし、jar は別の場所にあるため、常に見つかるとは限りません (例:私が得ている聖杯で ClassDefNotFound のために native2ascii).

  2. 一方、次のように使用すると、

    JAVA_HOME=/usr/share/java
    

    Java 実行可能ファイルはどれもありません (java, javac, 、など)を見つけることができます。

では、正しい対処方法は何でしょうか? JAVA_HOME Debian ベースの Linux の変数?

あなたの助けをありがとう、ルイス

役に立ちましたか?

解決

どのような最終的には(Grailsのが今スムーズに動作します)私のために働いたことはスティーブB.が指摘しているほとんどのようにやっています

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

ユーザーがシステムのデフォルトのJDKを変更する場合は、この方法では、JAVA_HOMEまだ動作します。

default-java現在のJVMへのシンボリックリンクである。

他のヒント

あなたが複数のJavaのバージョンを管理するための代替手段を使用する場合は、設定することができます。

JAVA_HOMEこのようなシンボリックリンクのJava(またはjavacの)に基づくます:

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

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

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

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

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

/opt/jdk --> /opt/jdk1.6.011

私は通常、任意のJAVA_HOME環境変数を持っていません。 Javaは自分自身それを設定することができます。 Javaのjava.homeの内部システムプロパティが利用可能である必要があります。

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

私が覚えている限りでは、私は更新のjava-代替スクリプトの代わりに、更新の選択肢を使用していました。そして、それは正しく私のためにJAVA_HOMEを設定しました。

あなたがJARファイルに問題がある場合は、

私はまた、あなたのCLASSPATHは、それらのファイルの場所を含むように設定されていることを確認します発見されません。私は、CLASSPATHが、多くの場合、異なるプログラムのために別々に設定する必要があり、多くの場合、個々のプログラムのために独自に設定するために何かされて終わることが見つけるのです。

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

更新の答え:<のhref = "http://www.wikihow.com/Install-Oracle- JavaのオンのUbuntu-Linuxの」REL = "nofollowを"> http://www.wikihow.com/Install-Oracle-Java-on-Ubuntu-Linux の

私は、OpenJDKの-6-JREとUbuntuでのOpenJDKの-6-JRE-ヘッドレスパッケージと同様の問題を発見しました。

私の問題は、OpenJDKの-6-JREとOpenJDKの-6-JRE-ヘッドレスパッケージと再インストールをパージすることによって解決しました。代替案は、唯一の新鮮なOpenJDKの-6-JREとOpenJDKの-6-jreを-ヘッドレスパッケージのインストールに更新されます。

以下でパージした後、インストールのサンプル

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.
...

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

これは、インストールした後、

、また、/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

のは、パージなしでインストールすると、これをcontastしてみましょう。

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-java-alternativesがトリガされません。

これは、インストールした後、

、<=>でのJavaバイナリのためのファイル、<=>でいないリンク、および<=>で無いのリンクはありません。

<=>内のファイルの除去はまた、<=>壊します。

のUbuntu 12.04この作品...

JAVA_HOME =は/ usr / libに/ JVM /ジャワ-6- OpenJDKの-I386 / JRE

は、Fedoraユーザのためのアップデートとして、代替案は、現在のjavaディレクトリを設定します / usr / javaの/デフォルト

あなたが、/ usr / javaの/デフォルトにあなたのJAVA_HOMEを設定する必要がありますので、

は常に海流の選択あなたのクラスパスに

の選択肢を持っています

HTH!

私の正しいターゲットは常に日からそれをダウンロードして、ちょうどそのようにインストールすることでした。次に、ディレクトリのすべてが中に入る内容を正確に把握ます。

しかし、あなたはDebianがそれをインストールすることを奇妙な方法に固執することを好むだろうと、私の最高の推測がちょうどJavaとjavacのバイナリが配置されている場所の上に、親ディレクトリになります。

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

ええ、そう聞こえない...

私もこの答えを聞いて興味を持っています!

更新-選択肢は(それが...素敵な男を持っている)ん命じるものを参照してくださいしてください。

まもなく - あなたは "Javaの" とり1のjava-日-1.4とJava-opensouce-1.0を...持っているときに何が起こりますか?これは、 "は/ usr / binに/ javaの" Debianのシンボリックリンクで、 "/usr/bin/java-sun-1.4は" "は/ usr / binに/ javaの" に代わるものです。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top