MIDP 2.0 バージョンの問題:$method は $type に対して未定義です
質問
私はいくつかの「高度な」ことを行う 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 メソッドにアクセスできないのはなぜですか?あるいは、私の何が間違っているのでしょうか?
解決
サウンド。あなただけのCLDC 1.0をサポートしている必要があります使用しているエミュレータは(これは確かにequalsIgnoreCase()
とdouble
とfloat
プリミティブを伴うものの欠如を説明するだろう)。ここをフルAPI を参照してください。そして、1.0の間の違いのリストはこちらのを見ます1.1。
編集: お使いのデバイスの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");
}
他のヒント
cldc_1.0.jarとcldc_1.1.jar(ならびにmidp_2.0.jarとmidp_2.1.jar)両方の参照Eclipseの
それを修正するには: ウィンドウに移動>設定>のJava ME>デバイス経営管理論> のあなたのデバイスの>編集...>ライブラリ> cldc_1.0.jar>削除
あなたがここに見つけることができます。詳細:<のhref = "http://thompsonng.blogspot.com/2009/09/j2me-setting-eclipse-to-use-cldc-11.html" のrel = "nofollowを" > http://thompsonng.blogspot.com/2009/09/j2me-setting-eclipse-to-use-cldc-11.html の
あなたはDefaultCldcJtwiPhone2のように、CLDC-1.1をサポートエミュレータデバイスを選択した後でも、あなたはまだCLDC-1.0をエミュレートするように設定することができる唯一の電話ます。
少なくともそれは、NetBeansのプロジェクトのプロパティがどのように見えるかです。
私はから更新した後、今日(11/03/10)同じ問題を抱えて: SDK 1.6.0_17 + EE 3.5.1 + Java_ME_platform_SDK_3.0 EA日食。 に: SDK 1.6.0_18 + EE 3.5.2 + Java_ME_platform_SDK_3.0日食ます。
(ダブル)メソッドCEILは、型数学のための未定義です (ダブル)メソッドフロアタイプの数学のための未定義です タイプの数学のメソッドABS(int)が(ダブル)の引数には適用されません (ダブル)メソッドSQRTタイプ数学
のために定義されていません