2012-12-13 20 views
2

我使用LWUIT作为我的j2me项目的GUI库。我使用LWUIT资源编辑器生成了一个netbeans项目。而且我有一个单独的项目,在其中为我的j2me程序编写其他组件。为什么我不能在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

它看起来像分配本身是有效的,但发生了什么事'TextForm'类? –

+0

你确定这不是人为错误(项目配置错误...)? –

+0

我没有对我的项目配置做任何更改(接受使用TextForm导入此额外项目)。 – Angstrem

回答

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位于同一目录中),您可以看到,该变量提供了一个路径所有你的项目的库,你包括。

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

+0

如果你解决了你自己的问题,那么你应该将其标记为答案!或者如果你认为这不太可能帮助其他人,那么就完全删除这个问题。 –

+0

该系统说,我将能够在14小时内将此标记为答案。 – Angstrem

相关问题