私がやろうとしていること
J2MEミッドレットをコーディングしていて、JSR-75を使用してファイルを書き込みたいです。また、JSR-75をサポートしていないデバイスでアプリを実行できるようにしたいと考えています。
私のやり方
これを行う方法を説明しているWebサイトを見つけました(URLを忘れてしまいました。申し訳ありません)。
- すべての機能を公開するパブリック抽象クラス(「サービス」)を作成します。
- この抽象クラスを拡張し、すべての機能を実装するパッケージプライベートクラス( "ServiceImplementation")を作成します。
- 両方を別のパッケージに入れ、Serviceをパッケージのファサードにレンダリングします。
このクラスをインスタンス化するには、抽象クラスの次のメソッドを使用します。
public static Service getInstance() {
try {
Class.forName("javax.microedition.io.file.FileConnection");
Class c = Class.forName("my.package.Service");
Service service = (Service) (c.newInstance());
return service;
} catch (Exception e) {
return null;
}
}
何が悪いのか
これは、JSR-75が存在する場合に完全に機能します。問題は、このミッドレットをJSR-75以外のデバイスでも実行したいことです。このコードを実行しようとすると、すべての例外をキャッチしていても、ClassNotFoundException:javax / microedition / io / file/FileConnectionがスローされます。 。
プロジェクト全体の検索を行って、FileConnectionを他の場所ではなくServiceとServiceImplementationで使用していることを確認しました。
誰かが私がこれを行うことになっている方法を知っていますか?