为什么我不能在j2me中使用多态?

时间:2012-12-13 11:49:19

标签: java java-me lwuit

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

在那个单独的项目中,我有一个班级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方法。它负责显示表格。这里没那么重要。

1 个答案:

答案 0 :(得分: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}" 

为了告诉preverifyer您所包含的库的位置,请将此属性更改为以下格式:

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

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

P.S。:是的,看起来很奇怪,这会以这种方式影响多态性,但它解决了这个问题......