4

いくつかの「高度な」ことを行う MIDlet を作成しました。Web から画像を取得し、サイズを変更し、電話に保存し、表示します。

これはすべて、Nokia S60 3rd Edition FP1 エミュレーターで完全に機能します。このデバイスは、MIDP 2.0 および CLDC 1.1 をサポートしています (ファイルを保存するために必要な JSR75 もサポートしています)。また、Nokia E71 (物理デバイス) でも正常に動作します。

次に、他のいくつかのエミュレーターで MIDlet を実行しようとしました。それらの 1 つである Java ME SDK 3.0 の DefaultCldcJtwiPhone2 も、MIDP 2.0 および CLDC 1.1 のサポートを主張しています。JSR75 がないため、「FileConnection を型に解決できない」理由が説明されています。

ただし、これは、List.deleteAll()、String.equalsIgnoreCase(String)、およびその他のいくつかが未定義である理由を説明していません。

私が得る実際のエラー:

  • メソッド ceil(double) はタイプ Math に対して未定義です
  • メソッド deleteAll() はタイプ List に対して未定義です
  • メソッド equalsIgnoreCase(String) は、タイプ String に対して未定義です
  • メソッド getWidth() はタイプ Displayable に対して未定義です

MIDP 2.0 (つまり JSR118) API ( http://java.sun.com/javame/reference/apis/jsr118/ ) を見ると、「since」タグを使用して、これらすべてのメソッドが存在していることがはっきりとわかります。 MIDP 2.0 または CLDC 1.1 のいずれかです。

私の質問: MIDP 2.0 をサポートするエミュレーターがすべての MIDP 2.0 メソッドにアクセスできないのはなぜですか? または、代わりに、私は何を間違っていますか?

4

4 に答える 4

1

CLDC 1.1 で定義されたメソッドを使用しているようです。使用しているエミュレーターは、CLDC 1.0 のみをサポートする必要があります (これは、およびプリミティブが含まれていないことを確実に説明します) equalsIgnoreCase()。完全な API については、こちらを参照してください。1.0 と 1.1 の相違点のリストについては、こちらを参照してください。doublefloat

編集: デバイスの CLDC バージョンを確認するいくつかの方法:

1)ここで説明されているように、microedition.configuration システム プロパティを確認します。

System.out.println("The CLDC version is:  " + System.getProperty("microedition.configuration"));

2) 1.1 でのみサポートされているクラスの存在を確認します。

try {
    Class.forName("java.lang.ref.WeakReference");
    System.out.println("It's CLDC 1.1");
} catch (ClassNotFoundException e) {
    System.out.println("It's CLDC 1.0");
}
于 2010-03-10T09:46:50.500 に答える
1

Eclipse は、cldc_1.0.jar と cldc_1.1.jar (および midp_2.0.jar と midp_2.1.jar) の両方を参照します。

修正するには: [ウィンドウ] > [設定] > [Java ME] > [デバイス管理] > [ your-device ] > [編集...] > [ライブラリ] > [cldc_1.0.jar] > [削除] に移動します。

詳細については、http: //thompsonng.blogspot.com/2009/09/j2me-setting-eclipse-to-use-cldc-11.htmlを参照してください。

于 2011-07-22T08:31:58.363 に答える
0

SDK 1.6.0_17 + eclipse ee 3.5.1 + Java_ME_platform_SDK_3.0 EAから更新した後、今日(11/03/10)同じ問題が発生しました。変換先: SDK 1.6.0_18 + eclipse ee 3.5.2 + Java_ME_platform_SDK_3.0。

メソッド ceil(double) は型 Math に対して未定義です メソッド floor(double) は型 Math に対して未定義です 型 Math のメソッド abs(int) は引数 (double) には適用できません メソッド sqrt(double) はタイプ Math に対して未定義

于 2010-03-12T01:32:16.757 に答える