問題タブ [cldc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
blackberry - 列挙型のWTKスタブジェネレータでjava.io.ObjectStreamExceptionが使用されるのはなぜですか?
インターフェイスで列挙型が定義されているWCFに実装されたWebサービスを使用しています。これをJavaBlackBerryクライアントから呼び出そうとしています。私はEclipseを使用してBlackBerry用のJavaアプリケーションを開発しています。Webサービスがかなり大きい(Windows Mobileクライアントですでに使用されている)ため、Sun Java Wireless Toolkit(WTK)2.5.2を使用してスタブコードを生成しています。
WTKを使用してスタブコードを生成しようとすると、列挙型に関するエラーがEclipseで発生します。次の関数では、java.io.ObjectStreamExceptionを型に解決できないと文句を言います。
スタブジェネレータを実行する場合、CLDC1.0またはCLDC1.1のいずれかのスイッチがあります。両方のオプションで生成すると、同じ問題が発生します。
Sunでこれに関するフォーラム投稿を見つけましたが、応答がありませんでした。この投稿の担当者は、「java.io.ObjectStreamExceptionはCLDCにはなく、代わりにCDCにあります。J2ME、特にCLDC 1.0 / 1.1のWebサービス用のスタブを作成するための優れたツールはありますか?」と述べています。[ドキュメント3 ]を見て、CLDC1.1に存在しないことを確認しました。
この状況を修正するためにEclipseで利用できる2つの簡単な修正があります:1)パッケージ'java.io'にクラス'ObjectStreamException'を作成するか、2)プロジェクトのセットアップを修正します(参照を追加する必要があります)。
アップデート:
これがJSR-172仕様の内容です...
5.2.5列挙JAX-RPCサブセットはXML列挙のサポートを提供しません。
5.2.6制限による単純型の派生JAX-RPCサブセットは、制限による単純型の派生をサポートしていません。
WCF列挙のWSDLは、を含む<xs:simpleType>
withを生成します。では、このフィールドは代わりにintであり、定数を定義すると言うだけですか?<xs:restriction>
<xs:enumeration>
これはWTKの単なるバグですか?もしそうなら、私はSunにバグレポートを提出し、彼らが応答するかどうかを確認します。ツールキットがこれをエラーとしてフラグ付けしないのはなぜですか?
そこで、JSR-172に準拠するようにインターフェイスを変更する必要があります。WSDLを読み取り、コンプライアンスの問題を指摘するためのツールはありますか?
java-me - J2ME に適した IoC コンテナーの探索が始まっています。
私は Blackberry/J2ME プロジェクトの初期段階にいます。この素晴らしいプラットフォームに付随するその他の制限に加えて、リフレクションと 1.3 言語レベルがサポートされていないため、既存の IoC コンテナーの大部分は使用できません。(Google には AOP のない Android 用の Guice がありますが、それでもアノテーションのサポートが必要です)。
そのため、J2ME 上の IoC コンテナーのスペースはかなり限られています。私の注意を引いた 1 つのフレームワークはSignal Frameworkと呼ばれ、かなり有望に見えます。Spring Framework の IoC に概念的に近いままで、その機能の小さなサブセットを実装しようとします。これは、バイトコードの変更に依存したり、実行時の xml 解析を引き起こしたりすることなく行われます。代わりに、ビルド時に構成 XML を処理して、この IoC 機能を実装する Java コードを生成します。
一般的に言えば、ビルド時のコード生成は、モバイル アプリケーションにとって非常に賢明なアプローチのように思えます。また、アプリがユーザーのデバイスで XML 解析を行う必要が少ないのであれば、それも素晴らしいことです。
では、J2ME/CLDC に IoC を実装した経験はどのようなものでしたか?また、どのようにして口の中の苦味を消すことができたのでしょうか?
java - J2MEは、java.util.TreeMapの実装を見つけられません
私が試していること
java.util.TreeMap
J2MEアプリケーションで使用しようとしています。TreeMap
これはJ2SEには存在しますが、J2MEには存在しないことを知っているのでTreeMap
、J2SE6.0をJ2ME1.2に移植し、MidletJarに含めるように努力しました。これには、コレクションフレームワークの半分の移植が含まれていましたが、今では(理論的には)それで終わり、テストしたいと思っています。
エラー
しかし、SUN J2ME SDK 3.0エミュレーター(DefauldClclPhone2)でアプリを起動すると、次の例外が発生します。
実際のデバイスで"Error in Application"
は、一致するSDKが現在ないため、実際の例外は表示されません。
そのエラーについて何がそんなにスタンジなのか
私のアプリケーションが事前検証プロセスを正常に実行したという事実に戸惑っています。私はいつも、クラスが見つからない(そして数日前に多くのクラスがあった)と、事前検証ツールでエラーが発生することを経験しました。NoClassDefFoundError
したがって、事前検証が成功した後は、デバイス上に何も存在しない可能性があると結論付けました。
詳細
私のjar内のディレクトリ構造は次のようになります。
TreeMap.class
また、それがJava1.2クラスのファイル形式であることを確認しました。
CDLC1.0とMIDP1.0をターゲットにしているので、事前検証ツールはクラスパスを使用しています${wtk.home}/lib/cldc_1.0.jar, ${wtk.home}/lib/midp_1.0.jar
考えてみてください。J2MEクラスローダーに、アプリケーションjarからjava.util.*
またはクラスをロードできないようにする特別なチェックはありますか?java.lang.*
私はそれを聞いたことがありませんが、おそらく彼らはセキュリティ機能としてこのようなことをしましたか?
結論と解決策
Joachim Sauerが指摘したように、クラスローダーは、クラスjava.*
を定義した場合、クラスをロードしません。そのため、それらを別のパッケージ、実際にはに移動する必要がありましたcom.companyname.j2meport.java.util
。私自身のコードはそこからそれらのクラスをインポートできますが、これはjava.util.TreeMapを参照するクローズドソースのサードパーティライブラリのオプションではありません。
私はついに、Retrotranslatorの拡張メカニズムを使用して、これらの参照を自分のクラスに変更することができました。これは、ビルドプロセスですでに使用していたツールですが、その機能については完全には認識していませんでした。
他のJ2SEライブラリに依存している私のJ2SEライブラリは、J2MEで実行されるようになりました。
blackberry - j2me / blackberry(midp)アプリケーションでオーディオを早送りおよび巻き戻しする方法は?
j2meおよびBlackberryアプリケーションで録音されたオーディオを早送りおよび巻き戻ししたい。
利用可能なサンプルコードはありますか?どうすればいいのですか?
java - CLDC 1.0 / MIDP 2.0 アプリケーションの三角法
CLDC 1.0 / MIDP 2.0 アプリケーションで三角法を使用するにはどうすればよいですか? 標準数学ライブラリの「sin cos tan asin acos atan atan2」関数が必要です。
ありがとう
java - J2ME: 乱数を生成するには?
J2ME CLDC 1.0 MIDP 2.0 を使用して乱数を生成する方法を知りたかっただけです。
基本的に、モバイルの画面からメニュー項目の生成をクリックするたびに、14 桁の乱数を生成したいと考えています。
java - Java ME での Class.getSuperclass() の置き換え?
Java ME でクラス インスタンスのスーパークラスを取得するにはどうすればよいですか。つまり、CLDC 1.1 で利用可能な機能が制限された Class.getSuperclass() 機能を偽装しているのでしょうか?
私がやりたいことは、抽象スーパークラスに次のようなことをさせることです:
サブクラスは、次のような特殊化を追加できます。
java-me - Java Mobile の CLDC と MIDP の違いは何ですか?
CLDC と MIDP の違いを説明できる人はいますか?
xhtml - 電話の互換性のある CLDC バージョンを検出する方法は?
私は現在、モバイル ベースの xhtml サイトに取り組んでいます。このサイトでは、ダウンロードページを作成する必要があります。このために、互換性のある CLDC バージョンの電話を検出する必要があります。私を助けてください。
ありがとう
java-me - MIDP 2.0 バージョンの問題: $type に対して $method が定義されていません
いくつかの「高度な」ことを行う 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 メソッドにアクセスできないのはなぜですか? または、代わりに、私は何を間違っていますか?