web-dev-qa-db-ja.com

MacでJava)をダウングレードできますか?

実際のリリースに備えて、ITチームのためにSnowLeopardをテストしています。現在、Java JDK1.6に付属しているシード10A394を実行しています。

Snow Leopardで実行されなくなったJavaデスクトップアプリケーションが1つ見つかりました。アプリは起動しません。ベンダーは、JDK1.5にダウングレードすることを推奨しています。

問題は、私が最初に見つけたMacパッケージのすべてのJavaは、それがApple)のバージョンのMacOSにインストールされようとしていることを確認することです。 =パッケージが作成されたときに念頭に置いていました。 このページ 良い例です。2つの異なるパッケージがありますが、それぞれがインストール前にMacOS 10.4または10.5を明示的にチェックするため、どちらもSnowLeopardでは機能しません。

インストールしたら、順序を変更して低いバージョンが優先されるようにする方法を知っています。インストールするパッケージが見つかりません。

1
Jeremy Wadhams

MacOSには、1.3までさかのぼるJavaのバージョンが付属しています。/System/Library/Frameworks/JavaVM.framework/Versionsを参照してください。パッケージからインストールする必要があるのは、最新のJavaはOSバージョンよりも新しく、何らかの理由でソフトウェアアップデートを使用できません。

アプリケーションのベンダーが実際に責任を負う必要がありますが、おそらくアプリの.plistを編集することで問題を修正できます。アプリケーションを右クリックしてパッケージの内容を表示を選択し、テキストエディタでInfo.plistファイルを開きます。そのファイルにJava辞書とキーJVMVersionが表示されます。値を1.5*に変更します(1.4+はバージョン1.4以降を意味し、1.6 *は1.6の任意のバージョンになります)。これにより、アプリはJava 1.5で実行されます。

しかし、これがすべてではないかもしれません。 Info.plistの横に、MacOS/JavaApplicationStubがあります。これは、JVMを起動する実際のMacOSXバイナリです。開発者は、OSと互換性のない古いバージョンのこのファイルをアプリに同梱している可能性があります。このファイルの最新のコピーは、すでに/System/Library/Frameworks/JavaVM.framework/Versions/Current/Resources/MacOS/JavaApplicationStubにあります。アプリケーションのバージョンをこれに置き換えます。

アプリケーションは、(たとえば)64ビットとして起動された後に32ビットのネイティブライブラリをロードできないため、まだ実行されない可能性があります。その場合、lipoコマンドを使用してスタブの64ビット部分を取り除くことができます:lipo -remove x86_64 JavaApplicationStub -output JavaApplicationStub

これがうまくいくことを願っています。もしそうなら、もちろんアプリの開発者に知らせてください。

3
Tungsten

Javaの複数のバージョンがインストールされている場合は、アプリケーション/ユーティリティ/ Javaで優先順位を変更できます。

必要なバージョンをインストールし、最優先バージョンに設定します。

1
sclarson
0
noam