[MW] Aufgabe 2, Eclipse

Wie starte ich ein Programm, oder besser mehrere?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

[MW] Aufgabe 2, Eclipse
Hallo,
jetzt hab ich also die ganze Zeit so vor mich hingecodet, in dem Eclipse, und stehe nun vor einem mittelgroßen Problem: Wie kann ich das Zeugs nun ausführen? Ich mein, Compilieren tut es ja, aber mich würd halt trotzdem auch interessieren, ob es auch funktioniert, wie es soll. Jetzt hab ich ja 2 main-Funktionen in 2 verschiedenen Klassen. Früher hab ich einfach auf den grünen Ausführen-Button geklickt und der hat mir meine main-Funktion aufgerufen, die dann halt was gemacht hat. Jetzt will ich aber eine andere main-Funktion starten und dann noch eine. Wenn ich in der Klasse selbst im Kontextmenü “Ausführen” auswähle, passiert nicht viel, außer dass halt irgendwas gestartet wurde. Wenn ich dann noch die andere Funktion starten will, passiert genauso viel oder wenig. Was ist da los? Wie geht das nun? Manchmal kann Eclipse schon sehr umständlich und nervig sein.


OT http://www.heise.de/newsticker/meldung/65991

rechtsklick → run as → java app
komplizierter: du legst dir eine “run konfiguration” an: Menü Run → Run, dann links unten “New”

oder du rufst den kram per shell auf :wink:


Au weia, das Java Studio sieht ja noch komplizierter aus als Eclipse. Das ist mir ja schon zu groß.

Ja, und genau das hab ich ja gemacht. Run as, java app. Dann passiert so gut wie nichts. Jedenfalls nichts woraus ich erkennen könnte, was tatsächlich passiert. Werd mir das andere Dings mal anschauen.


Ok, irgendwie hat der jetzt, nach Einfügen weiterer Textausgaben, beide Programme gestartet, auch das Debuggen scheint irgendwie zu gehen. Jetzt seh ich aber folgendes: Sobald das Client-Programm das Socket auf hat und einen ObjectInputStream davon erzeugt, bleibt es einfach stehen. Keine Ausführungskontrollen mehr, Call stack (sieht jedenfalls so aus wie einer) bleibt unverändert, keine Ausgabe, keine Aktivität. Ich kann das Programm jetzt nur noch beenden. Kann man keinen ObjectInputStream von einem Socket erzeugen? In der Hilfe ist genau so ein Beispiel vorhanden. Ist mein Java (1.5.0/MacOSX) kaputt?


Die Reihenfolge der Streams ist wichtig - hat man in unserer Übung aber auch erwähnt:

Client:

socket = new Socket(hostname, portNo);
obj_out = new ObjectOutputStream(socket.getOutputStream());
obj_in = new ObjectInputStream(socket.getInputStream());
[...]
obj_out.writeObject(command);

Server:

[...]
//im Server
Socket socket = serverSocket.accept();
[...]

// im Thread
obj_out = new ObjectOutputStream(socket.getOutputStream());
obj_in = new ObjectInputStream(socket.getInputStream());
[...]
Command command = (Command) obj_in.readObject();		

PS.: Das läuft auch prima unter Mac


Argh, Reihenfolge, stimmt, da war was. Das ist aber auch hirnrissig in Java wenn man so nen Kram beachten muss. Ach ja, hab ich schon erwähnt, dass ich Java nicht mag?


zustimm

Ja, der eine Stream blockiert halt, bis da auf der Gegenstelle was kommt.


öfters :wink:


Toll, jetzt kann ich sogar beide Programme gleichzeitig debuggen, geht aber dann doch nicht, weil der meinen Breakpoint im Server glatt ignoriert. Und genau dieser funktioniert nicht. Keine Ahnung was der macht, jedenfalls nicht das, was er soll.


echte Männer brauchen keinen Debugger… :wink:


Oh, klar, in PHP hab ich ja auch keinen. (Da braucht man sowas aber auch nur sehr selten.) Naja, werd ich halt ein paar System.out’s einfügen, wie zu guten alten C-Zeiten. Dauert halt sehr viel länger, funktioniert dafür aber zuverlässig. Ach ja, hab ich schon erwähnt, dass…