web-dev-qa-db-ja.com

Mac OSX Java端末バージョンが正しくありません

わかりました、私はMacとOSXに少し慣れていますが、私が仕事をしている会社でのJavaプログラムでのトラブルシューティングができるように1つを選びました。 OSXおよびWindowsマシン。実行中の問題は、OracleのWebサイトからJava 7をインストールすると、設定メニューが更新され、ダブルクリックすると.jarファイルが正しく実行されるように見えることです。 、ただし、ターミナルウィンドウのバージョンはまだ1.6.0_43であり、ターミナルから同じ.jarファイルを実行すると、古いバージョンが原因でランタイムエラーが発生します。

/ Library/Java/JavaVirtualMachines /に移動すると、空のフォルダーが表示されます。私が他の記事で見たことから、これはJava 1.7.0のバージョンフォルダーのあるべき場所です。何が起こっているのかわかりますか?ターミナルで正しいバージョンを使用するにはどうすればよいですか? Java?

編集:@DWilchesは彼の元の答えについてコメントします:(1)

total 64
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 Mar 17 21:38 A
lrwxr-xr-x  1 root  wheel    1 Mar 17 21:38 Current -> A
lrwxr-xr-x  1 root  wheel   59 Mar 17 21:38 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

(2)

ls -ld /usr/bin/Java
lrwxr-xr-x  1 root  wheel  74 Mar 17 21:38 /usr/bin/Java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java

編集:新しい回答の間違いで申し訳ありませんが、長い間元の投稿の編集をブロックするサイトに慣れすぎました...

60
DGolberg

JDK

Mac OSでは、/usr/bin/Javaとそのフレンドは、実際のJDKコマンドに委任するスタブです。これらのスタブはJava_HOME環境変数の設定を尊重しますが、これを機能させるには[〜#〜] jdk [〜#〜](from http://www.Oracle.com/technetwork/Java/javase/downloads/index.html[〜#〜] jre [〜#〜]とは対照的に=(from http://Java.com )。

JDKは/Library/Java/JavaVirtualMachines/jdk1.7.0_NN.jdk(NNの値に関係なく)にインストールされるため、Java_HOME環境変数を/Library/Java/JavaVirtualMachines/jdk1.7.0_NN.jdk/Contents/Homeに設定して、/usr/bin/Javaで1.7を使用します。代わりにJava_HOME/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Homeにポイントするだけで、1.6に戻すことができます。 /usr/libexec/Java_homeツールを使用して、正しい値を自動的に見つけることができます。たとえば、/usr/bin/Javaを使用してJava 7

export Java_HOME=`/usr/libexec/Java_home -v '1.7*'`

そして、それを使用するためにJava 6あなたができる

export Java_HOME=`/usr/libexec/Java_home -v '1.6*'`

同じことがJava 8(-v '1.8*'を使用)に適用されます。これにより、関連するメジャーバージョンの最新のインストール済みJDKが選択されます。NN更新をインストールするときに手動で。

JRE

1.7または1.8を実行したい場合[〜#〜] jre [〜#〜]は、コマンドラインから/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Javaにあります。これは固定パスであり、一度にインストールできる「パブリック」JREは1つだけです。

$ /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java -version
Java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)

.bashrcでシェルエイリアスを使用できます

alias Java_jre='/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java'
118
Ian Roberts

問題は、OracleのJREインストールが/ usr/bin/Java実行可能ファイルを変更しないことです。これを使用する場合は、Java/Libraryの下のパスを使用する必要があります(これが何かを見つける必要があるため、JDKがインストールされているため、異なる場合があります))

OracleのJRE インストールドキュメント

OracleからJREをインストールしても、Java -version symlinksが更新されたり、パスにJavaが追加されます。これを行うには、JDKをインストールする必要があります。 。

Oracle JDKは/usr/bin/Javaを変更して、Java 7実行可能ファイルを指します。開発を行う場合は、JRE以外のものが含まれているため、これを使用する必要があります。

Oracle インストールFAQ は言う

Q:JREまたはJDKをインストールする必要がありますか?

A:Javaアプリケーションを実行する場合は、Java Runtime Environment(JRE)をインストールしてください。JREはOracle Javaとも呼ばれます。 JREをインストールすると、JARファイル、JNLPファイルをダブルクリックして、ブラウザーを介してJavaアプレットおよびアプリケーションを起動できます。32ビットモードのFirefoxなどの32ビットブラウザー、およびChromeは、JREではサポートされていません。

Javaアプリケーションを作成する場合は、Java Development Kit(JDK)をインストールしてください。

11
Mark

まず、コンソールを終了して再度開き、PATH変数の変更を取得できるようにしましたか?

すでにこれを行っている場合は、Javaのデフォルトバージョンがどれであるかを確認してください。

dwilches@ ~$ cd /System/Library/Frameworks/JavaVM.framework/Versions/
dwilches@ Versions$ ls -l
lrwxr-xr-x  1 root  wheel   59 Mar 19 10:07 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.6.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 19 10:07 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel    1 Mar 19 10:08 Current -> A
drwxr-xr-x  8 root  wheel  272 Mar 25 10:03 A

これで、「現在の」バージョンが「A」であることがわかります(これは私のJava7です)。 Java 1.6に変更したい場合は、次のように記述できます。

dwilches@ Versions$ Sudo unlink Current
dwilches@ Versions$ Sudo ln -s 1.6 Current

その後:

dwilches@ Versions$ Java -version
Java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01-447-11M4203)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-447, mixed mode)

したがって、これを使用して、「Current」が目的のJavaの場所を指すようにすることができます。

5
MondKin