web-dev-qa-db-ja.com

JAVA_HOMEとPATHは設定されていますが、Java -versionはまだ古いものを示しています

Linux Mint Cinnamon 14を使用しています。次のように、$Java_HOME$PATHおよび~/.profile環境変数を設定しました。

export Java_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
export PATH=/home/aqeel/development/jdk/jdk1.6.0_35/bin:$PATH

次に、source ~/.profileを実行して適切な変更を加えました。

Java -versionコマンドを実行してアクティブなJavaバージョンを確認すると、デフォルト(インストール済みのopen-jdk)Javaバージョンが表示されます。デフォルトのopen-jdkをダウンロードしたもので上書きするにはどうすればよいですか?

更新:

which Javaは/ usr/bin/Javaと言います

$Java_HOME/bin/Java -versionは「許可が拒否されました」と表示します

Sudo $Java_HOME/bin/Java -version(パスワードを要求すると)コマンドが見つかりませんと言う

しかし、cd $Java_HOME/bin、およびlsは、正しいディレクトリであることを示しています。

42
user517491

セットアップは正しいように見えますが、確認することがいくつかあります。

  1. envの出力-特にPATH
  2. command -v Javaは何を教えてくれますか?
  3. $Java_HOME\binJava実行可能ファイルがあり、実行ビットが設定されていますか?そうでない場合はchmod a+x Java it。

.profileおよびsourceを追加/変更した後、PATHJava_HOMEしたと信じていますか?

また、代わりに次のように記述することにより、JDKインストールの将来のメンテナンスを支援できます。

export Java_HOME=/home/aqeel/development/jdk/jdk1.6.0_35
export PATH=$Java_HOME/bin:$PATH

その後、JDKインストールをセットアップするときに、1つのenv変数を更新するだけで済みます。

最後に、hash -rを実行してBashプログラムキャッシュをクリアする必要がある場合があります。他のシェルにも同様のコマンドが必要な場合があります。

乾杯、

61

update-Java-alternatives

Java実行可能ファイルはJava_HOMEで見つかりません。PATHにのみ依存します。

update-Java-alternativesは、システム全体で管理するための良い方法です:

update-Java-alternatives -l

サンプル出力:

Java-7-Oracle 1 /usr/lib/jvm/Java-7-Oracle
Java-8-Oracle 2 /usr/lib/jvm/Java-8-Oracle

選択肢の1つを選択します。

Sudo update-Java-alternatives -s Java-7-Oracle

update-alternativesと同様に、シンボリックリンク管理を通じて機能します。利点は、すべてのJavaユーティリティへのシンボリックリンクを一度に管理することです:javacJavajavapなど。

JDKに対するJava_HOMEの効果はまだ見ていません。これまでのところ、サードパーティのツールで使用されるのを見ただけです e.g。Maven

$ Java_HOME/bin/Java -versionは「許可が拒否されました」と表示します

コードにアクセスまたは実行できない場合、パスに追加しても無視されます。アクセス可能かつ実行可能にするか、独自のコピーを取得する必要があります。

やる

ls -ld $Java_HOME $Java_HOME/bin $Java_HOME/bin/Java

このプログラムにアクセスまたは実行できない理由を確認するには、.

4
Peter Lawrey

OracleのサイトからダウンロードしたJDKを使用する場合、(Mintを使用して)私のために働いたのはpdate-alternativesを使用している

  1. JDKをダウンロードして、たとえば/ home/aqeel/development/jdk/jdk1.6.0_35などの任意の場所に解凍しました
  2. 私が走った:

    Sudo update-alternatives --install /usr/bin/Java java /home/aqeel/development/jdk/jdk1.6.0_35/bin/Java 1`
    

    今、あなたはSudo update-alternatives --config Javaを実行し、あなたのJavaバージョンを選択することができます。

  3. これはJava_HOME変数を設定しないため、構成したかったので、export Java_HOME="/home/aqeel/development/jdk/jdk1.6.0_35"ステートメントを含めて〜/ .bashrcに追加しました

今、私は2つのJDKをダウンロードしました(2番目が/ home/aqeel/development/jdk/jdk-10.0.1に抽出されたとしましょう) 。

現在使用されているJavaに基づいてJava_HOMEを動的に変更するにはどうすればよいですか?

私の解決策は非常にエレガントではありません、より良いオプションがあると確信していますが、とにかく:

  1. 選択したJavaの代替に基づいてJava_HOMEを動的に変更するために、このスニペットを〜/ .bashrcに追加しました。

    export Java_HOME=$(update-alternatives --query Java | grep Value: | awk -F'Value: ' '{print $2}' | awk -F'/bin/Java' '{print $1}')
    

最後に(これは範囲外です)Javaバージョンを絶えず変更する必要がある場合、次のことを検討してください。

  1. alias〜。/ bash_aliasesに追加する:

    alias change-Java="Sudo update-alternatives --config Java"
    

(ファイルを作成しなければならない場合があり、〜/ .bashrcでこれに関連するセクションのコメントを解除する必要がある場合があります)

3
Gerardo Roza

Javaを検索すると、:で区切られたパスエントリが左から右に見えるため、/ usr/binの前に最新のjdk/binディレクトリのパスを追加する必要があります。最新のものを見つけて、さらに検索を停止します。

すなわちPATH =/usr/Java/jdk_1.8/bin:/ usr/bin:.....など。

次に、コマンドを使用してユーザープロファイルを初期化します:source〜/ .bash_profile

確認してください:[どのJava]

あなたは正しいものを手に入れるでしょう。

3
SandeepGodara

~/.profileまたは~/.bash_profileの更新が機能しない場合があります。 JDK 6とsourced .bash_profileを削除しました。

これを実行してみてください:

Sudo rm -rd jdk1.6.0_* #it may not let you delete without Sudo

次に、Java_HOMEおよびPATH変数を変更/追加します。

source ~/.bash_profile #assuming you've updated $Java_HOME and $PATH
0
javaProgrammer

簡単な方法があります。「/ usr/bin」からシンボリックリンクを削除するだけです。それが動作します。

0
Bineeth

これを試して:

  • export Java_HOME = put_here_your_Java_home_path
  • export PATH = $ Java_HOME/bin:$ PATHと入力します($ Java_HOMEがPATHの最初の要素であることを確認してください)
  • Java -versionを試してください

理由:別のJavaホームを指す他のPATH要素がある可能性があります。優先Java_HOMEを最初に配置すると、システムはこれを使用します。

0
rBay

Linux Mint 18 Cinnamonでは、必ず/ etc/profile.d/jdk_home.shを確認してください。このファイルの名前をjdk_home.sh.oldに変更しました。パスは上書きされないため、Java -versionを呼び出して、期待どおりJava 9を参照できます。 update-aternatives --config JavaでJava 9を正しく選択したにもかかわらず、このjdk_home.shファイルは起動時に$ PATHを上書きし続けました。

0
JesseBoyd

update-alternativesコマンドを使用して、Linuxシステムで使用可能なJavaバージョンを確認します。

 $ Sudo update-alternatives --display Java

変更する適切な候補があるので、次のコマンドを実行して、使用可能なJava JREの間でデフォルトのJavaバージョンを切り替えることができます。

 $ Sudo update-alternatives --config Java

プロンプトが表示されたら、使用するJavaバージョンを選択します。1または2または3など。

これで、デフォルトのJavaバージョンが次のように変更されたことを確認できます。

 $ Java -version
0
shabinjo