web-dev-qa-db-ja.com

Mac OS XでJDK 1.5を入手する方法

まだJDK 1.5を実行しているレガシーアプリケーションのコードを記述する必要があります。残念ながら、OS Xには実際には1.5 JDKがインストールされていないようです。それはただ1.6にリンクしています:

/System/Library/Frameworks/JavaVM.framework/Versions $ ls -l
lrwxr-xr-x  1 root  wheel    5 Apr 26 11:53 1.3 -> 1.3.1
drwxr-xr-x  3 root  wheel  102 Feb 11 15:33 1.3.1
lrwxr-xr-x  1 root  wheel   10 Apr 26 11:53 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Apr 26 11:53 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Apr 26 11:53 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Apr 26 11:53 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel    5 Apr 26 11:53 1.6 -> 1.6.0
drwxr-xr-x  7 root  wheel  238 Apr 26 11:53 1.6.0
drwxr-xr-x  8 root  wheel  272 Apr 26 11:53 A
lrwxr-xr-x  1 root  wheel    1 Apr 26 11:53 Current -> A
lrwxr-xr-x  1 root  wheel    3 Apr 26 11:53 CurrentJDK -> 1.6

http://developer.Apple.com/Java/faq/ からのように聞こえますJavaはOSアップデートの一部です...私は- Mac OS X v10.6. (Snow Leopard)このOSバージョンに実際の1.5 JDKをインストールする方法はありますか?

または、この作業を行う前に古いバージョンのOS Xを試してみる必要がありますか?

23
Eric

Eclipseまたは他のIDEでコードを記述している場合は、1.5準拠をターゲットにするようにコードを構成できるはずです。

Javacを直接使用している場合は、-source 1.5および/または-target 1.5 javacオプション、あなたがやっていることに十分かもしれませんか? 1.6 JDKは1.5準拠のコードを生成できるはずです。

5

Snow LeopardでJDK 1.4および1.5を入手してインストールする方法については、 http://wiki.oneswarm.org/index.php/OS_X_10.6_Snow_Leopard をご覧ください。また、ソフトウェアアップデートを実行してJDKアップデートがインストールされている場合は、シンボリックリンクを1.4および1.5 JDKに「修正」する必要があることにも注意してください。

UPDATE:補足として、OS Xで複数のJDKを使用して開発している場合は、コマンドラインからJDKを切り替えるためのこの便利な小さなユーティリティをご覧ください: setjdk

13
Rafael Cordones

ここには本当に2つの問題があります。

  1. Javaの古いバージョンをインストールする、およびソフトウェアアップデートでJavaが削除されないようにします。
  2. 古いバージョンを必要とするアプリケーションにそれを見つける場所を伝える一方で、他のすべてのものに最新バージョンのメリットを提供します。

古いバージョンのJavaのインストールについてすでに記述されている内容に(まだ)追加することは何もありませんが、 Mike Swinglerからのこの投稿によると 、Javaのランタイムエンジニア林檎:

Appleソフトウェアの更新を除いて、/ System/Library/Frameworks/JavaVM.frameworkのシンボリックリンクを変更することはできません。

つまり、Javaの古いコピーへのオペレーティングシステムのリンクの更新は、すべてのJavaを強制するため、疑わしい慣行です。 ]古いJavaバージョンを使用するシステム上のアプリケーション。

正しい方法は、Java_HOMEを必要に応じてJavaの正しいバージョンに設定することです。これを行うには、/usr/libexec/Java_homeを実行して特定のバージョンへのパスを取得します。たとえば、1.5バージョンへのパスを取得するには:

/usr/libexec/Java_home --version 1.5

8
James Tikalsky

開発するためにJava 1.5のコピーは必要ありません。 Java 1.6はJava 1.5と下位互換性があるため、1.5で動作するものはすべて1.6でも動作します。 -sourceおよび-targetフラグは、すべてが1.5で機能することを保証するために使用できます。つまり、 この記事 では、Snow LeopardでJava 1.5のコピーを取得する方法について説明します。ただし、システムを破壊または損傷する可能性があることに注意してください。

これがうまく機能してくれてありがとう: http://wiki.oneswarm.org/index.php/OS_X_10.6_Snow_Leopard

不思議なことに、あなたは必要があります指示の名前変更手順に従って、1.5と1.5.0のシンボリックリンクを実際のヒョウに変更しますJava 1.5-これを行わずにJavaバイナリを実行しようとすると、バスエラーが発生します。

いずれの場合でも、これらの手順のおかげで、実際にJava 5 JDKをコンパイルしてEclipseで実行することができます。これにより、lots問題が発生しました。1つは、Java 1.6のみのメソッドへの参照を即座に見つけて削除できることです。これはすばらしいことです。これらがQAに表示​​される前、またはさらに悪い場合、まだ数少ない顧客の1人がJava= 5でプログラムを実行しようとしたとき。これは悪いことでした。

これが、実際にシンボリックリンクをJava 6にポイントするだけでJDK5を「サポート」するのは、開発には十分ではない理由です。

3
n13

絶対に最も簡単な方法は Brice Dutheilによるこのスクリプトを使用 です。スクリプトを保存し、Apple(スクリプトからURIが通知されます)からdmgをダウンロードして、スクリプトを実行します。

3
oligofren

-sourceフラグと-targetフラグを使用できますが、すべての古いJREで機能するコードが常に生成されるわけではありません。以前の仕様で生成されたコードにバックコンパイルしようと試みたが、一部のユーザーには問題なく機能したが、他のユーザーには実行されない場合があったことは間違いありません。 1.5または1.4 JREを使用するすべてのユーザーが確実にコードを実行できるようにするには、おそらく1.5または1.4 JDKを使用して本番環境ビルドを行う必要があります。

Snow Leopardに「実際の」1.5および1.4 JDKをインストールするときに、以下の手順が非常に役立つことがわかりました。 http://codethought.com/blog/?p=2

0
corvi42