[英]Why can't I use polymorphism in j2me?
我正在使用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方法。 它負責顯示表單。 這里不是那么重要。
對於任何關心的人:錯誤都在項目的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
變量提供了包含的所有項目lib的路徑。
PS:是的,這以這種方式影響多態性似乎很不可思議,但是它解決了這個問題...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.