0

Linux (Ubuntu) から Mac OS に移行しました。Java (swing) でアプリケーションを作成しました。WindowsとLinuxで同じコードを正常に実行しましたが、Mac OSではいくつか問題があります。

コメントのコードと問題は次のとおりです。

public MainForm() {
    setResizable(false);
    setAutoRequestFocus(false); // This method is undefined for type MainForm
    initComponents();
}

別:

Object[] industries = jList1.getSelectedValuesList().toArray(); //  This method is undefined...

そして最後のもの:

setType(Type.UTILITY); // Type can't be resolved as variable

もちろん、私はそれをコンパイルすることはできません。

Java バージョン: Ubuntu:

Java バージョン "1.7.0_07" Java(TM) SE ランタイム環境 (ビルド 1.7.0_07-b10) Java HotSpot(TM) サーバー VM (ビルド 23.3-b01、混合モード)

マックOS:

Java バージョン "1.6.0_35" Java(TM) SE ランタイム環境 (ビルド 1.6.0_35-b10-428-11M3811) Java HotSpot(TM) 64 ビット サーバー VM (ビルド 20.10-b01-428、混合モード)

javaの更新ができません(mac用の最新バージョンらしいので)。今、このアプリを Mac で開発したいと考えています。

4

2 に答える 2

2

問題を引き起こしているメソッドを掘り下げた後、すべてのプラットフォームで同じJDKを実行していないことは明らかです。具体的には、Windows および Linux ボックスは JDK 1.7 を実行しており、Mac OS X ボックスは JDK 1.6 以前を実行しています。Mac で JDK 1.7 を使用する場合は、この質問を参照してください。

すべてのプラットフォームでアプリケーションをコンパイルする必要がないという事実は変わりません。Java は「一度コンパイルすればどこでも実行できる」言語です。コンパイラによって生成されたバイトコードは、自分でコードにシステム依存関係を導入しない限り、コンパイルしたプラットフォームに関係なく、すべてのプラットフォームで機能します。

つまり、コードがプラットフォームに依存しない限り、Java 自体はプラットフォームに依存しません。問題は単なる JDK バージョン エラーであるため、Mac の JDK バージョンを 1.7 にアップグレードすると、これが修正されます。

Java 6 以前では、1.7 ソース ターゲットでコンパイルされたバイナリを実行できないことに注意してください。コンパイル時にソース ターゲットを 1.6 に変更できますが、これにより Java 7 API (getSelectedValuesListメソッドなど) を使用できなくなります。

于 2012-09-24T18:50:53.477 に答える
1

Linuxで作成executable jarし、 Macで実行します。それはうまくいくはずです。 別の OS でアプリを開発する場合は、JDK のバージョンが同じであることを確認してください。 フルバージョンは同等である必要があります。1.6_ 31も等しいはずです

于 2012-09-24T18:43:42.003 に答える