web-dev-qa-db-ja.com

Java_HOMEを新しいOpen JDK 11にリセットできないJavaインストール

OS:UBUNTU 18.04

私はOracleをインストールしましたJava 8以前。ただし、JDK 11を開くように切り替えることにしました。正常にインストールされました。Java -version
openjdkバージョン "11.0.2" 2019-01-15 OpenJDKランタイム環境(ビルド11.0.2 + 9-Ubuntu-3ubuntu118.04.3)OpenJDK 64ビットサーバーVM(ビルド11.0.2 + 9-Ubuntu-3ubuntu118.04.3、混合モード、共有)

次に、Java_HOMESudo nano/etc/environmentを設定します。ファイルの変更:PATH = "/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin:/ usr/games:/ $ Java_HOME = "/ usr/lib/jvm/Java-11-openjdk-AMD64 /"

次に実行されます:ソース/ etc/environment

echo $ Java_HOME
/usr/lib/jvm/Java-11-openjdk-AMD64 /

しかし、端末を終了して端末をもう一度起動した瞬間:この出力が表示されます:

▶echo $ Java_HOME/usr/lib/jvm/Java-8-Oracle

あなたが見ることができるものは期待されたものではありません。私を助けてください

2

質問に答えるには

回答といくつかのコメントはJava_HOMEをバージョン11に設定する方法に焦点を当てていますが、問題は部分的には「バージョン8はどこに設定されるのか?」についてです。これに答えるには:

次のコマンドを使用します。

$ Sudo grep -rnw --exclude-dir={boot,dev,lib,media,mnt,proc,root,run,sys,/tmp,tmpfs,var} '/' -e '/usr/lib/jvm/Java-8-Oracle' | grep Java_HOME

/etc/profile.d/jdk.sh:4:export Java_HOME=/usr/lib/jvm/Java-8-Oracle
/etc/profile.d/jdk.csh:4:setenv Java_HOME /usr/lib/jvm/Java-8-Oracle
/home/rick/.gradle/daemon/4.6/daemon-14831.out.log:53:20:45:23.553 [DEBUG] (... SNIP ...) /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/Java-8-Oracle/bin:/usr/lib/jvm/Java-8-Oracle/db/bin:/usr/lib/jvm/Java-8-Oracle/jre/bin (... SNIP ...) Configuring env variables: {PATH=/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/Java-8-Oracle/bin:/usr/lib/jvm/Java-8-Oracle/db/bin:/usr/lib/jvm/Java-8-Oracle/jre/bin,  (... SNIP ...) 

これは私のシステムが返すものです。あなたのものはおそらく異なるでしょう。長い話を短くすると、犯人は/etc/profile.d/jdk.shです。

$ cat /etc/profile.d/jdk.sh

setenv J2SDKDIR /usr/lib/jvm/Java-8-Oracle
setenv J2REDIR /usr/lib/jvm/Java-8-Oracle/jre
setenv PATH ${PATH}:/usr/lib/jvm/Java-8-Oracle/bin:/usr/lib/jvm/Java-8-Oracle/db/bin:/usr/lib/jvm/Java-8-Oracle/jre/bin
setenv Java_HOME /usr/lib/jvm/Java-8-Oracle
setenv DERBY_HOME /usr/lib/jvm/Java-8-Oracle/db

おそらく/etc/profile.d/jdk.cshも変更する必要があると思います。実際、/etc/profile.d/jdk.shとまったく同じ内容が含まれています


XY問題に対処するには

ファイルを1行ずつ調べて811に変更するよりも良い方法があります。

最も簡単な方法は、Javaインストーラーを使用することです。これからAsk Ubuntu Q&AJDK 7をデフォルトとして設定)

インストールされているJavaプラットフォームのリストを取得するには、ターミナルから次のコマンドを実行します。

Sudo update-alternatives --config Java

これにより、次のようなリスト出力が得られます。

There are 2 choices for the alternative Java (providing /usr/bin/Java).
   Selection    Path                                           Priority   Status
  ------------------------------------------------------------
  0            /usr/lib/jvm/Java-6-Oracle/jre/bin/Java         1070      auto mode
  1            /usr/lib/jvm/Java-7-openjdk-i386/jre/bin/Java   1051      manual mode
* 2            /usr/lib/jvm/Java-6-openjdk-i386/jre/bin/Java   1069      manual mode
Press enter to keep the current choice[*], or type selection number: 
1

リンクでこれらの回答を読んでみてください。彼らは、環境変数の変更を永続化することに関するものです。ターミナルを閉じた後に何が起こっているかは、元に戻っていると思います。ここにリンクがあります: 環境変数の変更を持続させる

0
jwcooper

これを設定する最も簡単な場所は.bashrcにあり、次のようにすばやく実行できます。

echo Java_HOME=/usr/lib/jvm/Java-11-openjdk-AMD64/ >> .bashrc

これにより、bashの初期化時に最後の行が読み取られ、Java_HOMEが正しく設定されていることを確認できます。もっと複雑なことをする必要がある場合は、ターミナルの初期化方法について少し読んでください。 google-ing bashrcから始めることをお勧めします。

0
RaidPinata