2

我使用 LWUIT 作为我的 j2me 项目的 GUI 库。我使用 LWUIT 资源编辑器生成了一个 netbeans 项目。我有一个单独的项目,我在其中为我的 j2me 程序编写附加组件。

在那个单独的项目中,我有一个 class TextForm extends Form,其中 Form 是标准 LWUIT 的表单。当我尝试这样做时:

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 的属性:

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

为了告诉预验证器您包含的库在哪里,请将此属性更改为以下形式:

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

如果您查看该project.properties文件(它与 build-impl.xml 位于同一目录中),您会看到,该libs.classpath变量提供了您包含的所有项目库的路径。

PS:是的,这似乎很奇怪,这会以这种方式影响多态性,但它解决了问题......

于 2012-12-13T23:11:24.443 回答