web-dev-qa-db-ja.com

Java8にアップグレードしても、javacは1.7を表示します

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

そのパス内で、CurrentAへのシンボリックリンクです。 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をインストールして取得するにはどうすればよいですか?

37
Marty Pitt

/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?

39
Anthony Accioly

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バージョンを最初に起動します。

10
KayG

これは、(ほとんどの場合)jre8のインストールプロセスのバグです。

私のjre8フォルダーに移動するときに、まったく同じ動作をしています。これは、Windows(私の場合)がデフォルトで表示するフォルダーです。

  • Javaバージョン:1.8.0、ランタイム環境1.8.0-b132、ホットスポット64ビットJVM 25.0-b70
  • javacバージョン:1.7.0_25

jdk8ディレクトリに移動すると、次のように表示されます。

  • Javaバージョン:1.8.0、ランタイム環境1.8.0-b132、ホットスポット64ビットJVM 25.0-b70
  • javacバージョン:1.8.0

jrejavacを出荷しないことに気付いた、したがって、これはオペレーティングシステムの参照設定の問題です。

修正するには、OSでjavac参照を手動で修正する必要があります。

0
skiwi

ここに自分の経験を追加するだけで、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のデフォルトのインストールが適切に機能することを示しています。

0
machinat

まず、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)
0
Huang

クラスパスにある標準の.jarファイルを削除することもできます。 /Library/Java/Extensionsのjarを削除すると、問題は解決します。詳細: Javaコンパイルエラー:Mac

0
HadYang