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
は、正しいディレクトリであることを示しています。
セットアップは正しいように見えますが、確認することがいくつかあります。
env
の出力-特にPATH
。command -v Java
は何を教えてくれますか?$Java_HOME\bin
にJava
実行可能ファイルがあり、実行ビットが設定されていますか?そうでない場合はchmod a+x Java
it。.profile
およびsource
を追加/変更した後、PATH
をJava_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プログラムキャッシュをクリアする必要がある場合があります。他のシェルにも同様のコマンドが必要な場合があります。
乾杯、
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ユーティリティへのシンボリックリンクを一度に管理することです:javac
、Java
、javap
など。
JDKに対するJava_HOME
の効果はまだ見ていません。これまでのところ、サードパーティのツールで使用されるのを見ただけです e.g。Maven 。
$ Java_HOME/bin/Java -versionは「許可が拒否されました」と表示します
コードにアクセスまたは実行できない場合、パスに追加しても無視されます。アクセス可能かつ実行可能にするか、独自のコピーを取得する必要があります。
やる
ls -ld $Java_HOME $Java_HOME/bin $Java_HOME/bin/Java
このプログラムにアクセスまたは実行できない理由を確認するには、.
OracleのサイトからダウンロードしたJDKを使用する場合、(Mintを使用して)私のために働いたのはpdate-alternativesを使用している:
私が走った:
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バージョンを選択することができます。
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を動的に変更するにはどうすればよいですか?
私の解決策は非常にエレガントではありません、より良いオプションがあると確信していますが、とにかく:
選択した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バージョンを絶えず変更する必要がある場合、次のことを検討してください。
aliasを〜。/ bash_aliasesに追加する:
alias change-Java="Sudo update-alternatives --config Java"
(ファイルを作成しなければならない場合があり、〜/ .bashrcでこれに関連するセクションのコメントを解除する必要がある場合があります)
Javaを検索すると、:で区切られたパスエントリが左から右に見えるため、/ usr/binの前に最新のjdk/binディレクトリのパスを追加する必要があります。最新のものを見つけて、さらに検索を停止します。
すなわちPATH =/usr/Java/jdk_1.8/bin:/ usr/bin:.....など。
次に、コマンドを使用してユーザープロファイルを初期化します:source〜/ .bash_profile
確認してください:[どのJava]
あなたは正しいものを手に入れるでしょう。
~/.profile
または~/.bash_profile
の更新が機能しない場合があります。 JDK 6とsource
d .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
簡単な方法があります。「/ usr/bin」からシンボリックリンクを削除するだけです。それが動作します。
これを試して:
理由:別のJavaホームを指す他のPATH要素がある可能性があります。優先Java_HOMEを最初に配置すると、システムはこれを使用します。
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を上書きし続けました。
update-alternativesコマンドを使用して、Linuxシステムで使用可能なJavaバージョンを確認します。
$ Sudo update-alternatives --display Java
変更する適切な候補があるので、次のコマンドを実行して、使用可能なJava JREの間でデフォルトのJavaバージョンを切り替えることができます。
$ Sudo update-alternatives --config Java
プロンプトが表示されたら、使用するJavaバージョンを選択します。1または2または3など。
これで、デフォルトのJavaバージョンが次のように変更されたことを確認できます。
$ Java -version