簡體   English   中英

為什么我不能在j2me中使用多態?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM