2

j2me プロジェクトの GUI ライブラリとして LWUIT を使用しています。LWUIT リソース エディターを使用して netbeans プロジェクトを生成しました。また、j2me プログラム用の追加コンポーネントを作成する別のプロジェクトがあります。

その別のプロジェクトにはTextForm extends Form、 Form が標準の LWUIT のフォームである class があります。私がやろうとすると:

TextForm a = new TextForm();
a.show();

すべてうまくいっています。しかし、私がするとき:

Form a = new TextForm();
a.show();

コンパイル時エラーがあります:

Error preverifying class userclasses.StateMachine
    VERIFIER ERROR userclasses/StateMachine.onConnect()V:
Cannot find class client/lwuit/components/TextForm

( TextForm クラスには、client.lwuit.componentsコンポーネントを含む私の別のプロジェクトのパッケージに含まれています)。それで、この問題の解決策はありますか?

UPD:
a.show() メソッドは標準の Form メソッドです。フォームの表示を担当します。ここはそれほど重要ではありません。

4

1 に答える 1

1

気にする人のために: エラーはプロジェクトの build-impl.xml ファイルにありました (その場所は /nbproject/build-impl.xml です)。間違って生成されています。エラーは行にあります

<nb-preverify srcdir="${preverify.sources.dir}" destdir="${preverify.classes.dir}" classpath="${platform.bootclasspath}:${extra.classpath}" configuration="${platform.configuration}" platformhome="${platform.home}" platformtype="${platform.type}" commandline="${platform.preverifycommandline}"/>

クラスパスという名前のこのタグの属性を見てください。

classpath="${platform.bootclasspath}:${extra.classpath}" 

含まれているライブラリの場所を preverifyer に伝えるには、この属性を次の形式に変更します。

classpath="${platform.bootclasspath}:${extra.classpath}:${libs.classpath}"

project.propertiesファイル (build-impl.xml と同じディレクトリにあります) を調べると、その変数libs.classpathが、含めるプロジェクトのすべてのライブラリへのパスを提供していることがわかります。

PS:はい、これがポリモーフィズムにそのような方法で影響するのはかなり奇妙に思えますが、問題は解決しました...

于 2012-12-13T23:11:24.443 に答える