Packages in Java und J2ME
-
Hallo,
ich versuch gerade ein wenig mit J2ME (Version 2.2) rumzuspielen. Das geht auch alles gut, solange ich keine packages benutze. Sobald ich versuche mehrere Klassen zu benutzen und entsprechend ein package erzeuge, wird entweder, selbst nach einem Clean, kein neues MIDlet erstellt (also selbst wenn man den Text der Ausgaben ändert, bleibt der alte vorhanden) oder der Emulator meldet, dass er die MIDlet-Klasse nicht findet. Der Build wird mir aber immer als complete gemeldet.Ich hab mal ein simples Beispiel erzeugt, um das Problem zu verdeutlichen:
Datei: PackageDemo/src/foo/bar/PackageDemo.java
package foo.bar; import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; import java.lang.Thread; public class PackageDemo extends MIDlet { //private Foo moep; public void startApp() { Display display=Display.getDisplay(this); Form form=new Form("Java Demo"); form.append("moep"); display.setCurrent(form); try { Thread.sleep(10000); } catch(InterruptedException e) { } } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }
Datei: PackageDemo/src/foo/bar/Foo.java
package foo.bar; public class Foo { }
Was mach ich falsch?
-
*push*
-
öhm. Kann mir wirklich niemand helfen?
-
Sieht so aus. Ich habe keine Ahnung was da schief läuft. Frag doch mal in den Sun Foren! Da ist die Wahrscheinlichkeit auf jeden Fall höher, dass dir jemand helfen kann, da dort mehr Leute "unterwegs" sind, wenn ich mich nicht irre.
Vielleicht liegt´s auch an der "IDE" oder was du da benutzt(bei NB würde mich das nicht wundern *räusper*).Wenn das mit dem "Build" nicht klappt, probier doch mal, das Ganze "manuell"(javac) zu compilieren.
-
Ich benutz zum kompilieren die KToolbar, wie sie bei J2ME mitgeliefert wird. Die Beispielanwendungen funktionieren auch alle.
-
FINALE FASSUNG:
Vielleicht muss die Hauptklasse, die ja von MIDlet erbt, im Stammverzeichnis liegen ? Ist es denn von so kolossaler Bedeutung, dass die bei dir in einem anderen Paket als dem Standardpaket liegt?
Also bei klappt so alles wunderbar(auch mit KToolBar):
/src/Test.java:
import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; import java.lang.Thread; import foo.bar.Tool; public class Test extends MIDlet { //private Foo moep; public void startApp() { Display display=Display.getDisplay(this); Form form=new Form("Java Demo"); Tool tool = new Tool(); form.append(tool.getMessage()); display.setCurrent(form); try { Thread.sleep(5000); } catch(InterruptedException e) { } } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }
/src/foo/bar/Tool.java:
package foo.bar; public class Tool { private ToolsTool tst = new ToolsTool(); public Tool() { } public final String getMessage() { return tst.getMessage(); } }
/src/foo/bar/ToolsTool.java:
package foo.bar; public class ToolsTool { private String string = "Du benutzt mich doch auch nur!"; public ToolsTool() { } public final String getMessage() { return string; } }
-
Vielleicht muss das MIDlet auch nicht im Stammverzeichnis liegen. Aber hast du denn dann auch foo.bar.PackageDemo als MIDlet bei der Erstellung des Projektes angegeben?
-
oh, dass wird es sein. Danke, ich werd es gleich mal ausprobieren und mich melden.
-
Ja, dass war es. Vielen Dank.
-
Kein Problem.