OracleのWebサイトからダウンロードしたJDK 7u7をインストールしました。しかし、インストール後、端末はまだJavaバージョン6を表示しています
$Java -version
Java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)
なぜJava 7が表示されないのでしょうか。
答え:はい、問題は解決しました。答えは次のとおりです。私のターミナルには.bash_profileがあり、Javaホーム変数は1.6に設定されていることに気付きました
export Java_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"
だから、これは私が新しいターミナルウィンドウを開くたびに問題を引き起こしている行です。この行を削除するだけで問題は解決します。それでも@alerootが言ったことに従う必要がありますが、それがうまくいかない場合は、.bash_profile(または.bashrc)設定ファイルを調べて、以前にJavaバージョンをエクスポートしたかどうかを確認してください。
これは、Java Preferencesペインに入力してJVM 7にのみフラグを立てる必要があるためです。
Mac OS XでJava Preferencesペインを簡単にすばやく開くには、次のコマンドを使用してspotlightを呼び出すだけです。 ⌘+SPACE そしてシステム設定とタイプすればウィンドウの最後の行に表示されます。
Oracleのインストーラは/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
の中にJavaを置きます。そしてそれは/usr/bin/Java
を上書きしません。だから、あなたが発行した場合
whereis Java
端末では、/ usr/bin/Javaを返します。 (これは、Appleの1.6バージョンである/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/Java
を指しています)。
そのため、新しいJavaバージョンを使用する場合は、代わりに/usr/bin/Java
を指すように/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java
シンボリックリンクを置き換えます。
Sudo rm /usr/bin/Java
Sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java /usr/bin
JDK 7 をインストールすると、この問題は自動的に解決します。
Java Runtime Environment(JRE)だけでなく、コンパイラーやそのようなものを含むJava Development Kit(JDK)を必ず入手してください。
vi ~/.bash_profile
追加する
export Java_HOME=`/usr/libexec/Java_home -v 1.7`
これは/usr/bin/Java
リンクターゲットに、にインストールされた最新のJava 7パッケージを使うように伝えます。
/Library/Java/JavaVirtualMachines/
JDKの場合、1.7.0_17
Java_HOME
は次のようになります。
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
注意:最近、この分野では、Mac OS XをAppels独自のシステム統合JavaパッケージからOracleベースのJavaパッケージに移行するための大きな変更がありました。上記の解決策は、Mac OS X 10.8.2以降ではうまく機能しています。
私の場合、問題はオラクルが以前とは別の場所にインストールしていたことです。
Oracleからダウンロード: http://Java.com/en/download/mac_download.jsp?locale=ja
システム環境設定を調べて、正しくインストールされていることを確認します。
バージョンが予想通りであることを確認します(必要に応じてパスにsubを指定します)。
/ライブラリ/ Internet\Plug-Ins/JavaAppletPlugin.plugin /目次/ホーム/ bin/Java -version
/ usr/bin/Javaから新しいインストールへのリンクを作成します。
Sudo ln -fs /ライブラリ/ Internet\Plug-Ins/JavaAppletPlugin.plugin /目次/ホーム/ bin/Java/usr/bin/Java
健全性チェックあなたのバージョン:
Javaバージョン
私は、端末がMacにインストールされているバージョンと一致するようにJavaのバージョンを更新しないという同様の問題に遭遇しました。
設定されているJava_HOME環境変数に問題はありませんでした
私は一時的でやや苦痛だが実用的な解決策を思いついた。
あなたの中に.bash_profile行を追加してください:
export Java_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home"
(これは私のマシン上のパスですが、自分のものとは異なる場合があります。必ず自分のものを入手してください。パスは/ Library/Java/JavaVirtualMachines /まで一致する必要があります)
実行source ~/.bash_profile
私が述べたように、これは一時的なバンドエイドソリューションです。Javaホームパスはハードコーディングされているからです。最新のものを取得するようにパスを設定する方法は実際にはありません。それは、Appleがすでにターミナルに対して行っていることであり、AppleのJava_home環境変数が更新されていないことです。
El Capitan以降、新しい "rootless"ポリシーが導入されたため、/usr/bin/Java
シンボリックリンクを削除することは困難です。
したがって、私は単に最新のJavaバージョン(私の場合は/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
)へのパスを.bashrc
ファイルのPATH
に追加しました。
# Use latest Java version
export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH
現在のセッション用に.bashrc
ファイルをリロードするには、シェルでsource ~/.bashrc
を実行します。 .bashrc
ファイルを変更する前に開始されたセッションに対してのみこれを行う必要があります。
シェルでJava
を使用すると、最新バージョンが使用されます。
私にとって最も簡単でわかりやすい方法は、ここで説明しているように自作を使ってJavaをインストールすることです。
https://stackoverflow.com/a/28635465
brew update
brew cask install Java
基本的な問題:/usr/bin/Java
は最初にOSX自身によって提供されたものを指しています(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java
)これはJDKインストーラによってダウンロードされたものを指す必要があります。以下の手順はOSX 10.10.4 Yosemite用です。
Path
項目をダブルクリックしてパスをコピーします(cmd + c)。これは、JDKインストーラ/アップデータによってインストールされた最新のものです。私の場合、パスは/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java
でしたln -s
コマンド)。以下のコマンドを実行してください。Sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java /usr/bin/Java
それでおしまい。確認するには、端末上でJava -version
を実行するだけです。インストール/アップデートした最新バージョンが出力されるはずです。
あなたの端末で以下のコマンドを実行することができます。
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
そしてこれは古いJavaを新しいものに置き換えます。
やった
export Java_HOME=`/usr/libexec/Java_home`
そしてそれは私のJava 8の問題を修正しました。
前:
Java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
後:
Java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
このツールを見てみることをお勧めします Jenv
これにより、インストールしたJVMをいつでも切り替えることができます。
単純に:
jenv global Oracle-1.7
その後、テスト目的のために:
jenv global Oracle-1.6
そして、もっとたくさんのコマンドがあります。
http://www.Java.com/en/download/faq/Java_mac.xml は理解するのに良い場所です、AppleはJavaのサポートをやめています、なぜJava Preferencesはもう存在せず、System_Preferencesに頼っているのですか=> Java => OracleのJava 7がインストールされている場合はJava。
これはナッツです!何もインストールしないインストーラをOracleはどのように提供しますか。
とにかく私にとってそれはそれでした:
Sudo rm /usr/bin/Java
Sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/Java /usr/bin/Java
1.8.0_31はインストールしたJavaのバージョンです。
Java_HOMEパスをハードコーディングするのは最善の方法ではありません。 /usr/libexec/Java_home
ユーティリティは、Mac OSX Lion 10.7.5とJDK 1.7.0_13で動作します。そのmanページによると、それはAppleの古いJava Preferencesペインで使われることを意図しています、しかしそれはOracleによって提供された置き換え(Java Control Panel)と共に働いているように見えます。たとえば/usr/libexec/Java_home -V
を実行すると、私のマシンにインストールされているすべてのJDK(1.6。*と1.7。*の両方)が一覧表示されます。
そのため、他のスレッドで議論されているように(例: OSX上でJava_HOMEに何を設定すべきですか )、.bash_profileに次の行を追加することをお勧めします。
export Java_HOME=$(/usr/libexec/Java_home)
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
あなたのマシンに複数のJavaバージョンがあり、実行時に動的にそれを選択したい場合、つまり、私の場合は、2つのバージョンがあります
ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x 3 root wheel 96B Nov 16 2014 jdk1.7.0_71.jdk/
drwxr-xr-x 3 root wheel 96B Mar 1 2015 jdk1.8.0_31.jdk/
/ etc/profileの内容を変更することでそれらを変更できます。ファイルの最後に次の2行を追加(または変更)するだけです。
export Java_HOME=YOUR_Java_PATH/Contents/Home
export PATH=$Java_HOME/bin:$PATH
私の場合は、使用したい場合は次のようになります。
Java 7:
export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$Java_HOME/bin:$PATH
Java 8:
export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$Java_HOME/bin:$PATH
ファイルを保存した後、source /etc/profile
を実行してください。これは私がそれに応じて最初と2番目のオプションを使用したときの結果です。
Java 7:
Java -version
Java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java 8:
Java -version
Java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Javaフォルダが別の場所にある場合も、プロセスは似ています。
Jreではなくjdkをインストールしてみることができると思います。 jdkをインストールすると、/ usr/bin/Java内のJavaが置き換えられ、すべてのライブラリが正常に動作します。
.bash_profileが変更を反映していないために起こっています。それを反映するには、単に次のコマンドを使用してください
$ source .bash_profile
このコマンドを実行して、/ Library/Internet Plugins /にあるJavaのバージョンを見つけることができます。
defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion
私はYosemiteを再インストールし、ターミナル(Java -version)と(javac -version)でJavaのバージョンをクロスチェックすることでこの問題を解決しました。 )libray> Java> javavirtualmachine>あなたのjavac現在のバージョン。Javaホームにアドレスを指定する必要があります。
インストールされているJDKのバージョンを確認します。
$ ls /Library/Java/JavaVirtualMachines/
jdk-11.0.2.jdk jdk1.8.0_91.jdk
~/.bashrc
エクスポートJava_HOME
でバージョンを指定します。
if [ -e /usr/libexec/Java_home ]; then
export Java_HOME=$(/usr/libexec/Java_home -v 11)
fi
Bashrcファイルを入手すると、Javaのバージョンが更新されます。
$ Java -version
Java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
Homebrewがインストールされている場合は、 Java-switcher をインストールして、Javaのデフォルトバージョンをより迅速に変更できます。
brew tap andycillin/tap
brew install Java-switcher
そうすれば、デフォルトのJavaバージョンを切り替えるのに1つのコマンドだけを使用できます。
Java-switcher 1.7
または
Java-switcher 10
Oracleサイトから分散JDK DMGを介してインストールすると、すべて自動更新されます。私は(El Capitanで)System Preferences > Java
doの更新を通して更新しているのを見ましたが、それはコマンドラインに反映されません。 DMGを介したインストールがその仕事をします。
私はこの問題に直面していないので、私は慌てています -
これを試してください。
ソフトリンク "Java_home"はどこを指していますか。
ls -lrt /usr/libexec/Java_home
出力:(停止)lrwxr-xr-x Java_home - > /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java_home
** ls -lrt /System/Library/Frameworks/JavaVM.framework/Versions My MACで次のファイルが生成されます。
lrwxr-xr-x CurrentJDK ->
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents**
lrwxr-xr-x Current -> A
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.6.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.4 -> CurrentJDK
これに基づいて、さらに進むためのヒントが得られるでしょうか。
私はこの問題をSudo rm /usr/bin/Java
で解決しました
そして私は最後のJava SE Runtime Environmentをダウンロードしてインストールしました: http://www.Oracle.com/technetwork/Java/javase/downloads/index.html
私はSudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/Java /usr/bin/Java
を手に入れたのでOperation not permitted
は私のために働きませんでした。 El Capitanは特定のシステムディレクトリを "rootless"モードで保護します(System Integrity Protectionとも呼ばれます)。それはmacOS Sierra、そしておそらく近い将来の新しいmacOSバージョンに適用可能です。