Java CentOSのyumを介してインストールしますが、別のJavaプログラムはJava_HOME環境変数が何であるかを知る必要があります。環境変数の設定についてすべて知っていますが、 Java
は/usr/bin/Java
にインストールされていますが、そこにはありません!
実際に見つけました
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/
。 update-alternatives --display Java
と表示され、ディレクトリ/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/Java
よくわかりませんが、通常のRPMSをインストールすると、Java_HOMEの値も次のように設定できます。
/usr/Java/default/
編集:私は私の家のシステムをチェックしました。私はこのファイルを作成しました:
/etc/profile.d/Java.sh
含まれています:
export Java_HOME=/usr/Java/default/
sunの公式バージョンを使用しています:jdk-1.6.0_12-fcs
編集:これが 設定方法Java :
ダウンロードしてインストールJava OracleからのJDK
次の2つのコマンドを使用して、OpenJDKバージョンの代わりにJavaが使用されていることを確認します。
alternatives --install /usr/bin/Java java /usr/Java/default/bin/Java 999999 \
--slave /usr/bin/keytool keytool /usr/Java/default/bin/keytool \
--slave /usr/bin/rmiregistry rmiregistry /usr/Java/default/bin/rmiregistry
alternatives --install /usr/bin/javac javac /usr/Java/default/bin/javac 999999 \
--slave /usr/bin/jar jar /usr/Java/default/bin/jar \
--slave /usr/bin/rmic rmic /usr/Java/default/bin/rmic
すべてのユーザーがJava_HOME環境変数を正しい値に設定していることを確認します。
echo "export Java_HOME=/usr/Java/default/" > /etc/profile.d/Java_home.sh
以下は常に完全に私のために働いています:
[user@base ~]$ locate bin/Java
/usr/bin/Java
/usr/bin/javac
/usr/bin/javadoc
/usr/bin/javaws
/usr/Java/jdk1.6.0_31/bin/Java
/usr/Java/jdk1.6.0_31/bin/javac
/usr/Java/jdk1.6.0_31/bin/javadoc
/usr/Java/jdk1.6.0_31/bin/javah
/usr/Java/jdk1.6.0_31/bin/javap
/usr/Java/jdk1.6.0_31/bin/javaws
/usr/Java/jdk1.6.0_31/jre/bin/Java
/usr/Java/jdk1.6.0_31/jre/bin/Java_vm
/usr/Java/jdk1.6.0_31/jre/bin/javaws
つまり、Java_HOMEを/usr/Java/jdk1.6.0_31として設定できます
次のように、Java_HOMEをJDKまたはJREのルートの場所に設定します。
export Java_HOME=/usr/Java/jdk1.3
JDK(開発キット)がインストールされている場合、ypuはそれを指すようにする必要があります。そうでない場合は、JREパス(Javaランタイム環境)を使用します。次に、$ PATH環境変数を設定して、binディレクトリも含めることができます。
export PATH=$PATH:/usr/Java/jdk1.3/bin
Tomcatを使用している場合は、TomcatユーザーのCATALINA_HOMEも設定する必要がある場合があります。
export CATALINA_HOME=/path/to/Tomcat
これをシステムに設定するには、/ etc/profileを編集するか、/ etc/profile.dフォルダーに.shファイルを追加します。特定のユーザーに対して、ユーザーの〜/ .profileまたは〜/ .bash_profileファイルにそれを置くことができます。
Javaで使用されているバージョンを変更した場合の問題を検討しました:
alternatives --config Java
次に、ハードコードされたJava_HOME
が変更されます(少なくとも現在見ているCentos 6.6では変更されます)。つまり、/usr/Java
はありません。
これは最善の方法ではないようです(失敗する可能性があります)が、これに費やした10分間で、それが最善の方法です。
/etc/bashrc
では、設定をJava_HOME
に次のように変更しました。
export Java_HOME=$(alternatives --display Java | grep current | sed 's/link currently points to //' | sed 's|/bin/Java||')
MacOSXでも同様のことを行う必要がありますが、結果を解析するためにgrep
とsed
をすべて使用する必要はありません。確かにalternatives
も同様に簡単なソリューションを提供します。
とにかく私は助けてくれたらいいのですが。
更新
いいえ、JRE_HOME
になります。 JDK/SDKはそれほど明白ではありません(今後も検討します)。
alternatives
は、デフォルトではJREについてのみのようです。 @Nielsの回答に従うか、Java with yum
をインストールして、Java_HOMEをそれに設定します(トリックは、インストールされた場所を見つけたところです!)。
yum install Java-1.8.0-openjdk-devel.x86_64
cd /usr/lib/jvm
Java_1.8.0
が/etc/alternatives/Java_sdk_1.8.0
へのシンボリックリンクであることに気付いたので、$ Java_HOMEを/usr/lib/jvm/Java_1.8.0
に設定します。 /etc/bashrc
。
re:Centos7、/ etc/Java/java.confファイルを参照してください。
その中のJava_HOMEは、次のディレクトリにあることが示されています。/ usr/lib/jvm/Java
私がチェックしたところ、それは私がyum経由でロードしたjdkの正しいバージョンなので、...
私の環境にはデフォルトでJava_HOMEが設定されていないため、.bash_profileに設定します
パッケージマネージャーはさまざまな場所に配置できるので、whichを使用します(コンテナーを使用する場合は、これを明示的にインストールする必要があります)。
javaCompiler=$(which javac)
javaBin=$(dirname $(readlink -f $javaCompiler))
javaHome=${javaBin%/*}
export Java_HOME=$javaHome
またはJREの場合
javaExec=$(which Java)
javaBin=$(dirname $(readlink -f $javaExec))
javaHome=${javaBin%/*}
export JRE_HOME=$javaHome
奇妙なことに、JAVE_HOME環境変数を使用することの要点は、各プログラムへのパスを指定する必要がないため、この変数を探すことでこのパスを取得できることです。
いずれにせよ、Java_HOMEの環境変数を見つける正しい方法は、echoを使用することです。
[root@Host ~]# echo $Java_HOME
/usr/Java/j2sdk1.4.2_09
このコマンドを実行すると、実行しているバージョンに関係なく、コマンドラインからパスが表示されます。