Programm aus einem Buch funzt nicht!

Big Masie

Mitglied
Hallo,

ich habe aus meinen Java ME Buch ein Programm nach Programmiert und es Läuft im Emulator nicht!
Zu dem Buch gab es auch eine CD mit allen projekten drauf, da habe ich dann als es nicht gefunzt hat den Quelltext kopiert und es damit versucht und es klappt auch nicht! Woran kann das liegen? hier mal der komplette Code:

[Java]
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;

public class HalloWelt extends MIDlet implements CommandListener
{
private Display display;
private Command
menuExit=new Command ("Verlassen", Command.EXIT,1);

private ChoiceGroup
cGroup=new ChoiceGroup("Auswahl", ChoiceGroup.EXCLUSIVE);
private DateField
dField=new DateField("Kalender", DateField.DATE);
private Gauge
gauge=new Gauge ("Fortschritt", true,10,2);
private TextField
tField=new TextField("Textfeld","...",30,TextField.ANY),
ltField=new TextField("Textfeld","",30,TextField.UNEDITABLE);
private Command
menuSave=new Command("Save", Command.ITEM,1),
menuLoad=new Command("Load",Command.ITEM,1);

private Form f=new Form("Hallo Welt Form!");


public HalloWelt()
{
cGroup.append("Äpfel",null);
cGroup.append("Birnen",null);
f.append(cGroup);
f.append(dField);
f.append(gauge);
f.append(ltField);
f.addCommand(menuSave);
f.addCommand(menuLoad);
f.addCommand(menuExit);
f.setCommandListener(this);
}

private void saveTextField()
{
RecordStore store;
byte[] data;

try
{
store=RecordStore.openRecordStore("HalloWeltStore", true,RecordStore.AUTHMODE_PRIVATE,true);
data=tField.getString().getBytes();
store.setRecord(1,data,0,data.length);
store.closeRecordStore();
}
catch(RecordStoreException rse)
{
ltField.setString(rse.toString());
}

}

private void loadTextField()
{
RecordStore store;
byte[] data;

try
{
store=RecordStore.openRecordStore("HalloWeltStore", false);
data=store.getRecord(1);
store.closeRecordStore();
ltField.setString(new String(data));
}
catch(RecordStoreException rse)
{
ltField.setString(rse.toString());
}
}

public void startApp() throws MIDletStateChangeException
{
display =Display.getDisplay(this);
display.setCurrent(f);
}

public void pauseApp()
{
}

public void destroyApp(boolean unconditional) throws MIDletStateChangeException
{
}

public void commandAction(Command c, Displayable s)
{
if(c==menuExit)
notifyDestroyed();

else if(c==menuSave)
saveTextField();

else if(c==menuLoad)
loadTextField();

}
}

[/Java]

beim Compilieren kommt in der Console immer das hier in rot:

Application descriptor does not declare any MIDlet. Direct execution is not allowed.

Hoffe ihr könnt mir helfen
Danke schon mal im vorraus.
 

CNail187

Mitglied
Hallo!

Also der Code ist soweit in Ordnung, läuft bei mir einwandfrei mit Netbeans 6.7.1 und Sun WTK 2.5.2.
Die Probleme scheinen also eher bei deiner Umgebung zu liegen...

Gruß,
CNail
 

Big Masie

Mitglied
ich benutz dieses Java_ME_platform_SDK_3.0
auf der seite von sun stand das dass der nachfolger vom wtk sein soll.
Soweit find ich das auch ziemlich gut und das Programm was ich davor geschrieben hatte funzte auch in jeglicher hinsicht
woran kann das jetzt liegen? Ich hab an den einstellung ja nichts geändert
 

Big Masie

Mitglied
Ja genau das wars! Cool danke :)
aber mal ehrlich wie soll den da jemand drauf kommen der gerade anfängt das zu lernen ^^ aber danke

aber gleich noch ne frage in dem textfeld was ich dort programmiert habe kann ich (jedenfalls im emulator) nichts reinschreiben woran liegt das?
 

CNail187

Mitglied
Naja, also du erzeugst 2 Textfelder zeigst aber nur eines davon an. Und dieses eine (ltField) wird im Konstruktor als UNEDITABLE deklariert -> ergo ist es schreibgeschützt.

Nun hast du mehrere Möglichkeiten:

- Du zeigst das andere (tField) auch noch an:
Java:
f.append(tField);
Ist wahrscheinlich das beste, dann kannst du auch via saveTextField() etwas in das RecordStore reinschreiben.

- Du machst ltField von Anfang an editierbar:
Java:
private TextField ltField = new TextField("Textfeld", "", 30, TextField.ANY),

- Du machst ltField im Nachhinein editierbar:
Java:
ltField.setConstraints(TextField.ANY);

Gruß,
CNail
 

Big Masie

Mitglied
also ich hab das tField jetzt auch sichtbar gemacht und das klappt auch wunderbar nur das mit dem speichern und/oder laden klappt nicht.
Also ich tipp irgentwas ins das Feld ein geh dann auf save und dann geh ich auf load, dann müsste der doch was ich zuvor eingetippt habe in dem anderen Textfeld anzeigen oder? jedenfalls tut er das nicht, er tut überhauptnichts auch keine fehlermeldung oder so
 

CNail187

Mitglied
Die Methode setRecord() funktioniert nur wenn es schon einen Datensatz mit dieser ID gibt. Beim ersten Anlegen musst du stattdessen addRecord() verwenden.

Du kannst deine saveTextField() - Methode also zum Beispiel so abändern:

anstelle von:
Java:
store.setRecord(1,data,0,data.length);

das hier:
Java:
if (store.getNumRecords() == 0) {
   store.addRecord(data, 0, data.length);   
} else {
   store.setRecord(1, data, 0, data.length); 
}

Übrigens erhälst du keine Fehlermeldungen, weil du dich auf die RecordStoreException beschränkst.
Wie man in der API-Doc http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/rms/RecordStore.html#setRecord(int, byte[], int, int) sieht, kann dabei aber noch anderes schiefgehen...
;-)

Gruß, CNail
 

Big Masie

Mitglied
ah ok so funzt das erstmal, jedoch nich wenn ich das programm neu starte dann läd der das nicht, is das normal, oder liegt das jetzt nur am emulator?

und was mich auch wundert is das dass laut dem Buch ja alles so klappen sollte ich versteh es nicht ... is das Buch einfach falsch oder was? o_O
 

CNail187

Mitglied
Also bei mir funktioniert es auch nach einem Neustart des Emulators.
Was genau geht denn nicht? Das Anzeigen des alten Wertes beim Load ohne vorheriges Save?
Hast du eigentlich eine richtige IDE nebst Debugger zur Hand? Damit käme man ja schon ein Stück weiter. Für die J2ME-Entwicklung kann ich Netbeans empfehlen.
 

Big Masie

Mitglied
der zeigt den wert nicht an nach neustart trotz speicherns.

und ich benutze Java ME Platform SDK 3.0

Netbeans hab ich auch mal gehabt aber ich fand das ziemlich unübersichtlich vor allem haben mich diese ständigen autokomentare genervt die man nich löschen konnte und so
 

CNail187

Mitglied
Ich habe das Programm jetzt spaßenshalber nochmal auf dem Emulator vom N97-SDK laufen lassen: Dieser merkt sich den alten Wert auch über einen Neustart hinweg-> liegt also eindeutig am verwendeten Emu. Keine Ahnung, ob man am WTK3 noch etwas drehen kann.
Ist ja auch kein Beinbruch, da das Programm ja nun funktioniert.

und ich benutze Java ME Platform SDK 3.0
Das war schon klar...


Netbeans hab ich auch mal gehabt aber ich fand das ziemlich unübersichtlich vor allem haben mich diese ständigen autokomentare genervt die man nich löschen konnte und so
Najaaaa...

Als Alternative gibts zum Beispiel noch Eclipse und die Mobile Tools for Java.
 

Big Masie

Mitglied
also habs mit netbeans jetzt ma compiliert und im emu laufen lassen und da speichert der das auch nicht richtig, also obald man den neustarten den emu klappt es halt nicht mehr
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Android Befehle an einem PC-Programm schicken Android & Cross-Platform Mobile Apps 4
W Fertiges Programm auf dem Telephon zum Laufen bringen - wie? Android & Cross-Platform Mobile Apps 13
V Kennt jemand ein Programm , um .DEX Dateien zu öffnen, bearbeiten und wieder speichern? Android & Cross-Platform Mobile Apps 2
T Android Programm zu Android-App Android & Cross-Platform Mobile Apps 4
B Wo lege ich im Programm texdteien oder ini's ab Android & Cross-Platform Mobile Apps 16
J Programm zum prüfen auf AppUpdates Android & Cross-Platform Mobile Apps 7
Y Erstes kleines Android Programm will nicht so recht... Android & Cross-Platform Mobile Apps 1
F Android USB Verbindung zu Windows Programm Android & Cross-Platform Mobile Apps 3
M Android Android Programm mehr Speicher zuweisen Android & Cross-Platform Mobile Apps 4
S Android Programm pausieren lassen Android & Cross-Platform Mobile Apps 2
M Frage zu Java Programm für Windows Mobile 6.5 Android & Cross-Platform Mobile Apps 2
P Android Programm stürzt ab - Es geht um Netzwerk Android & Cross-Platform Mobile Apps 5
S Programm, daß auf eingehende Anrufe reagiert Android & Cross-Platform Mobile Apps 3
E Fertiges Programm auf Smartphone zum laufen bringen. Android & Cross-Platform Mobile Apps 2
C Programm nicht auf Handy installierbar (Zertifikatfehler) Android & Cross-Platform Mobile Apps 3
R Programm mit Elementen aus High-Level API und Low-Level API Android & Cross-Platform Mobile Apps 11
D J2ME - Wie und welches Programm Android & Cross-Platform Mobile Apps 10
U Programm um die Klassen darzustellen Android & Cross-Platform Mobile Apps 4
S Idee gesucht für ein kleines Programm Android & Cross-Platform Mobile Apps 3
A Java Programm auf Handy? Android & Cross-Platform Mobile Apps 2
luke86 Programm von Handy zu Handy weitergeben(NOKIA N70) Android & Cross-Platform Mobile Apps 3
D Bluetooth Pairing dem Programm ueberlassen? Android & Cross-Platform Mobile Apps 3
J J2ME Java Programm im Hintergrund auf Handy laufen lassen? Android & Cross-Platform Mobile Apps 2
G Programm auf handy installieren Android & Cross-Platform Mobile Apps 3
B Programm für NokiaComunicator erstellen Android & Cross-Platform Mobile Apps 2
D c programm als java application aufs nokia 6230 Android & Cross-Platform Mobile Apps 2
AllBlack Auf der Suche nach einem App-Entwickler Android & Cross-Platform Mobile Apps 1
I Android Auf ImageView aus einem anderen Thread zugreifen liefert Fehlermeldung (App stürzt ab) Android & Cross-Platform Mobile Apps 5
ruutaiokwu Android In einem Android-“Spinner”-Element GLEICHZEITIG Bild (links) UND Text (rechts) anzeigen Android & Cross-Platform Mobile Apps 0
ruutaiokwu Wie fügt man bei Android Studio .jar-Libraries zu einem Android-Java-Projekt hinzu? Android & Cross-Platform Mobile Apps 33
L Eingaben in der MainActivity einem Service übergeben Android & Cross-Platform Mobile Apps 0
M mehrere URLs in einem AsyncTask abarbeiten Android & Cross-Platform Mobile Apps 2
M Android App → Problem mit dem Speichern von einem Bitmap–Objekt. Android & Cross-Platform Mobile Apps 1
Alex/89 ImageView mit einem Bild von der SD Karte füllen Android & Cross-Platform Mobile Apps 5
G GPS in einem Service abfragen Android & Cross-Platform Mobile Apps 2
J wie sicher ist der Quellcode in einem apk? bzw wie schützt man ihn? Android & Cross-Platform Mobile Apps 6
B Android In einem View der ersten Activity zweite anzeigen Android & Cross-Platform Mobile Apps 2
A Android Von einem Thread auf anderen zugreifen Android & Cross-Platform Mobile Apps 3
W Android Bestimmen von welchem Typ die Objekte in einem ArrayAdapter sind Android & Cross-Platform Mobile Apps 3
N Textview macht immer nach einem Beistrich einen Abstand Android & Cross-Platform Mobile Apps 6
S Android binäre Daten zwischen Android und einem Java-Server Android & Cross-Platform Mobile Apps 5
B Zeilen zählen in einem Textfile Android & Cross-Platform Mobile Apps 1
G Schriftgröße in einem TextField ändern Android & Cross-Platform Mobile Apps 2
A Problem beim Subtrahieren eines Double von einem Double Android & Cross-Platform Mobile Apps 5
U ein texteingabefeld auf einem Canvas . Android & Cross-Platform Mobile Apps 2
M Java Midlet -> in einem ChoiceGroup ein TextField zur Wah Android & Cross-Platform Mobile Apps 2
G Java Programme auf einem PDA Android & Cross-Platform Mobile Apps 1
C Android Programmierung speziell oder einfach Java Buch kaufen? Android & Cross-Platform Mobile Apps 3
D Android Spiele Programmierung Buch Android & Cross-Platform Mobile Apps 2
R Android Gutes Buch zu Android Android & Cross-Platform Mobile Apps 10
F Welches Buch als gutes Nachschlagewerk? Android & Cross-Platform Mobile Apps 2
B Java ME Prog aus Buch funzt nicht! Android & Cross-Platform Mobile Apps 3
F Welches Buch zu java ME könnt ihr empfehlen? Android & Cross-Platform Mobile Apps 2
B J2Me Buch? Android & Cross-Platform Mobile Apps 4

Ähnliche Java Themen

Neue Themen


Oben