OSXでJDK 1.7-> 1.8からのアップグレードに問題があります。アップグレードは完了しましたが、javacはバージョンとして1.7を返します。
Oracleのホームページから JDK 8_u5 をダウンロードし、インストーラーを実行しました。
また、インストール後、次の手順を実行しました。
> export Java_HOME=`/usr/libexec/Java_home -v 1.8` (Executed in my .bashrc file)
> echo $Java_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
> javac -version
javac 1.7.0_21
> $Java_HOME/bin/javac -version
javac 1.7.0_21
> $Java_HOME/bin/Java -version
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)
Java 1.7(および他のすべてのJDKバージョン))を削除して削除し、インストーラーを再実行します。
> ls /Library/Java/JavaVirtualMachines
jdk1.8.0_05.jdk
まだ使用できません。javacはバージョンを1.7.0_21として報告します
> which javac
/usr/bin/javac
> ls -ltra /usr/bin/javac
[snipped] /usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
そのパス内で、Current
はA
へのシンボリックリンクです。 A/Commands
の内容は一連のファイルです(シンボリックリンクではありません)。
> cd A/Commands
> ./javac -version
javac 1.7.0_21
> ./Java -version
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)
元の投稿に加えて、 this answer で提案されているように、 jenv で掘り下げました。
> jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
> jenv global Oracle64-1.8.0.05
> jenv version
Oracle64-1.8.0.05 (set by /Users/martypitt/.jenv/version)
> jenv info Java
Jenv will exec : /Users/martypitt/.jenv/versions/Oracle64-1.8.0.05/bin/Java
> jenv info javac
Jenv will exec : /Users/martypitt/.jenv/versions/Oracle64-1.8.0.05/bin/javac
> javac -version
javac 1.7.0_21
これは、これが私の道に潜んでいるランダムなjavacであり、何らかの形で呼び出されるという私の考えにばらつきを投げかけます。
確かに、私はJavaを完全に無効にして、再試行しました:
> cd /Library/Java/JavaVirtualMachines
> ls
jdk1.7.0_55.jdk
jdk1.8.0_05.jdk
> Sudo rm -rf *
> ls
<<empty>>
> Java -version
Java version "1.6.0_65"
> javac -version
javac 1.6.0_65
> which javac
/usr/bin/javac
次に、 インストーラの最新コピー を再ダウンロードして実行しました。
> Java -version
Java version "1.8.0_05"
> javac -version
javac 1.7.0_21
すべてのJDK、XCode、およびすべての開発者ツールを削除してみたところ、新たに再インストールされました。同じ結果。
しかし、私はまだ迷っています-ここからどこに行きますか? javac 1.8をインストールして取得するにはどうすればよいですか?
/usr/libexec/Java_home -v 1.8.0_05 --exec javac -version
は正しいバージョンを返しますが、問題は次のとおりです。
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
特権ユーザーで実行:
cd /System/Library/Frameworks/JavaVM.framework/Versions/
rm CurrentJDK
ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/ CurrentJDK
で見つかった解決策 Mankehブログ
また、JDKバージョンを動的に切り替えるために、スーパーユーザーの this answer も確認してください。
更新:犯人を見つけたと思います!
これを試して:
rm -rf ~/Library/Java/Extensions
Sudo rm -rf /Library/Java/Extensions
次の場所に解決策が見つかりました:1.5として実行されているOSX 10.9.2上のJava 1.7?
Windowsユーザーの場合:
PATH変数を変更する必要がある可能性があります。 "%Java_HOME%/ bin"をPATHのfirstエントリとして設定してみてください。
そのため、次のようになります。
PATH C:\Program Files\anyprogram;C:\Program Files\...;%Java_HOME%\bin
そして、このように変更します:
PATH %Java_HOME%\bin;C:\Program Files\anyprogram;C:\Program Files\...
理由:他のプログラムは、他のJavaバージョンを最初に起動します。
これは、(ほとんどの場合)jre8のインストールプロセスのバグです。
私のjre8フォルダーに移動するときに、まったく同じ動作をしています。これは、Windows(私の場合)がデフォルトで表示するフォルダーです。
jdk8ディレクトリに移動すると、次のように表示されます。
jreがjavacを出荷しないことに気付いた、したがって、これはオペレーティングシステムの参照設定の問題です。
修正するには、OSでjavac参照を手動で修正する必要があります。
ここに自分の経験を追加するだけで、Oracleからjdk-8u131-macosx-x64をインストールしました。すべてが完璧に機能しました。 Java_HOME環境変数が存在しないか、必要ありません。
mehboob$ javac -version
javac 1.8.0_131
mehboob$ Java -version
Java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
/ System/Libraryはこれを示しました:
mehboob$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions/
total 64
lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.4 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 17 2013 1.6.0 -> CurrentJDK
drwxr-xr-x 8 root wheel 272 Sep 9 2014 A
lrwxr-xr-x 1 root wheel 1 Oct 17 2013 Current -> A
lrwxr-xr-x 1 root wheel 59 Oct 17 2013 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
/ Library/Javaにはこれがありましたが:
mehboob$ ls -l /Library/Java/
total 8
drwxrwxr-x 2 root admin 68 Oct 17 2013 Extensions
lrwxr-xr-x 1 root wheel 48 Oct 17 2013 Home -> /System/Library/Frameworks/JavaVM.framework/Home
drwxr-xr-x 3 root wheel 102 Jun 9 11:43 JavaVirtualMachines
拡張機能には何もありませんでしたが、JavaVirtualMachinesにはjdk1.8.0_131.jdkフォルダーしかありませんでした。
これは、追加の構成を必要とせずに、JDKのデフォルトのインストールが適切に機能することを示しています。
まず、jdk8をダウンロードしてインストールする必要があります( http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html )
第二に、次のようにいくつかのチェックを行います:お使いのシステムには、シェルにリンクされていない使用Java 8がありますか?これを端末で試してください(はい、アポストロフィが重要です)
$ '/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java' -version
「Java version "1.8.0_131" "」と表示されたら、次のステップに進むことができます。
第三に、bash_profileを編集します。
$ vi ~/.bash_profile
そしてこれを入力してください:
Java_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
PATH=$Java_HOME/bin:$PATH
CLASSPATH=.:$Java_HOME/lib
export Java_HOME
export CLASSPATH
保存して終了してから
source ~/.bash_profile
上記のステップの後、Javaバージョン
$ Java -version
Java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
クラスパスにある標準の.jarファイルを削除することもできます。 /Library/Java/Extensions
のjarを削除すると、問題は解決します。詳細: Javaコンパイルエラー:Mac