Fehler in meinem Chat Applet

Mitglied: Snowboarder1994

Snowboarder1994 (Level 1) - Jetzt verbinden

03.01.2011, aktualisiert 06.01.2011, 5175 Aufrufe, 25 Kommentare

Hallo,

habe ein Chat in Java bekommen und weiter programmiert. Habe das Problem, das es einfach nicht startet. Ich komme bis zum Login des Chats und dann steht auf dem Button, wo normal steht "Einloggen", das man in den Chat eintreten kann "Fehler". In der Datei ConectServer, befindet sich das drin, was das verursacht, das es Fehler anzeigt. (Auszug des Codes unten).

Woran kann dies liegen?

Hier ist mal die Url, habe es mit Firefox und Safari getestet. Im Internet Explorer o.ä. habe ich es noch nicht versucht: http://wakestars.onpw.de

Hier habe ich mal den Code des ConectServer Datei vielleicht lässt sich was rausfinden:

Mitglied: maretz
03.01.2011 um 15:54 Uhr
und wenn du den Code jetzt noch in nen Code-Block packst und vernünftig formatierst (-> Einrückungen usw.) dann könnte man sich das sogar angucken...
Bitte warten ..
Mitglied: MttKrb
03.01.2011 um 16:56 Uhr
Hallo,
die Code-Formatierung müsste dringend nachgeholt werden.
Wenn das passiert ist, sind noch folgende Fragen offen:
- Welche Änderungen wurden wo gemacht?
- Lief das Programm vor den Änderungen Fehlerfrei?
- Hast du die entsprechenden Funktionen mal debuggt?

Der Code lies sich bie mir nicht kompilieren, da diverse Klassen wie u.a. "WakeStars", "ChatFrame","userListe" nicht gefunden wurden.

Gruß
Jogibaer0411
Bitte warten ..
Mitglied: Snowboarder1994
03.01.2011 um 19:00 Uhr
Hier mal der Code:

Habe den Code so wie er ist. Kann es sein, das die Verbindung nicht aufgenommen werden kann mit dem Server aber so wie ich es in diesem Code unten sehe müsste alles richtig sein. Das ist ja die ConnectServer Datei die mit dem Server verbindet. Kann es daran liegen, das noch keine DB (Datenbank) vorhanden ist, aber diese dürfte ja jetzt noch nicht stören.
Ja, es funktionierte vorher einwandfrei.
Die diversen Klassen habe ich in einer anderen Datei.


Bitte warten ..
Mitglied: maretz
03.01.2011 um 19:25 Uhr
Moin,

ich versuch es ja gern nochmal im guten. Du hast ein Problem. Du gibst hier 608 Zeilen Quellcode an uns - unkommentiert, undokumentiert. Und du machst dir nicht mal die Mühe da ein wenig mit Einrücken zu arbeiten. Was ist denn jetzt für dich besser zu lesen?

ODER


Jetzt denk drüber nach - und dann formatiere bitte deinen Code. DANN sind die Leute auch gerne bereit den durchzugucken. Aber wenn du dir keine Mühe gibst - dann wird sich hier auch keiner Mühe geben wollen....
Bitte warten ..
Mitglied: Snowboarder1994
03.01.2011 um 20:36 Uhr
Ok. Also hier nochmal alles als richtig formulierten Code.
Zeile 577 bis 580 ist das, was am Login Fehler anzeigt dort steht auch "FEHLER": http://wakestars.onpw.de/fehler1.png

Warum das Fehler anzeigt weiß ich nicht. Screen habe ich beigelegt.

Habe das Problem, das es einfach nicht startet. Ich komme bis zum Login des Chats und dann steht auf dem Button, wo normal steht "Einloggen", das man in den Chat eintreten kann "Fehler". In der Datei ConectServer, befindet sich das drin, was das verursacht, das es Fehler anzeigt. (Auszug des Codes unten)

Webseite zur Demo: http://wakestars.onpw.de

Zeile 545 sollte es sein bzw. Eintreten sollte dran stehen das ich rein komme. Weitere Fehlermeldungen sind 553 560 567 d.h. es zeigt mir den Fehler an, was er aber unter Fehler will weiß ich leider nicht, was dort der Fehler ist.
Hier nochmal die 3 Zeilen 577-580:

}
catch (Exception localException1) {
this.source.enterButton.setLabel("FEHLER");
}



Bitte warten ..
Mitglied: maretz
03.01.2011 um 20:55 Uhr
Moin,


Hier tritt ja nur die Fehlerbehandlung ein. D.h. etwas ist schief gegangen - und der geht in die localException (also die Fehlerbehandlung) rein. Mir ist es aber zu kompliziert bei deinem Code die ganzen Try-Catch-Blöcke zu verfolgen....

Generell: Du kannst ja mal versuchen das so zu machen:

this.sourche.enterButton.setLabel("Fehler: "+localException1.printStackTrace());

die komplette Fehlermeldung zu bekommen. (ich bin mir grad nicht sicher: printStackTrace oder printStacktrace ). Ggf. bringt dich das schonmal weiter - du siehst dann ggf. die genaue Zeile des Fehlers und die Fehlermeldung (NPE, ...)
Bitte warten ..
Mitglied: Snowboarder1994
03.01.2011 um 21:04 Uhr
Verstehe gerade gar nichts mehr.

Soll ich meinen Code 577-580 durch diesen ersetzen? this.sourche.enterButton.setLabel("Fehler: "+localException1.printStackTrace());


Ich könnte mal die ganzen Dateien vom Applet irgendwo hochladen, dann kannst du mal alles anschauen.
Bitte warten ..
Mitglied: maretz
03.01.2011 um 21:16 Uhr

Damit sollte das dann eine etwas ausführlichere Meldung geben.
Bitte warten ..
Mitglied: Biber
03.01.2011 um 21:25 Uhr
Moin Schneebrettler,

maretz meint bestimmt:

..denn der Aufrufstack wird in dem lütten Enter-Knöppken wohl eher albern aussehen.

Aber unabhängig von der Nebelstocherei:
  • Wieso weisst du denn nicht mehr, welche Änderungen du gemacht hast zwischen letzter lauffähiger Version und dem jetzigen Gestrunkele?
  • Wieso gehst du du nicht einfach eine Version zurück?
  • wieso hörst du jetzt zum ersten Mal im Leben die Begriffe "Codeformatierung", "Debuggen", "Breakpoint setzen", wenn du es dir zutraust, in Java einen Chat zusammenzuschrubbeln?

Lag der Code Weihnachten unterm Baum und stand echt dein Name dran?

Kopfschüttelnd
Biber
Bitte warten ..
Mitglied: maretz
03.01.2011 um 21:41 Uhr
Moin Biber,

generell wäre deine Lösung gut - ich gehe aber davon aus dass das Applet in nem Browser ausgeführt wird - und das Debug-Features eher unbekannt sind...

Ok, man könnte auch nen schönes neues Fenster erzeugen (DAS wäre ja richtig schön - dann weiss der Benutzer wenigstens was los is) - aber das wäre mir hier zuviel zu tippen und ggf. nur unnötig viele fehler...

Was mir aber grad einfällt: Wenn man das printstacktrace so wie du im browser ausführt - haut der das dann in das browser-window? DAS hab ich noch nie probiert....
Bitte warten ..
Mitglied: Snowboarder1994
03.01.2011 um 23:06 Uhr
Ich versuche das mal zu ersetzen, in Class umwandeln und wieder hochladen, ob dies funktioniert, bzw. was angezeigt wird.

}
catch (Exception localException1) {
this.source.enterButton.setLabel("FEHLER" + localException1.printStackTrace());
}

Die Version lag 1 1/2 Jahre auf meinem alten Computer und ich weiß nicht mehr was ich damals geändert habe, da ich in der zwischen Zeit eine PHP Community betrieben habe. Jetzt muss ich die Fehler 1 nach dem anderen abarbeiten.
Bitte warten ..
Mitglied: MttKrb
04.01.2011 um 15:11 Uhr
Hallo,
du solltest als allererstes den Code dokumentieren und Einrücken.
ich habe das Gefühl, dass du zur Zeit selber nicht weist was dieser genau macht.
Bitte warten ..
Mitglied: Snowboarder1994
04.01.2011 um 18:01 Uhr
Ich möchte diesen Quelltext kompilieren, das aber irgendwie der kompiler nicht zulässt er gibt folgende Fehlermeldung:
Erklärung was was ist in diesem Code folgt gleich.




Zeile 181 ist das, was im Chat angezeigt wird, wenn die Verbindung unterbrochen wird.

Zeile 526 wird angezeigt wenn ein Update vorgenommen wird, das ist die Abfrage die ein Administrator im Chat eingeben kann, dann wird an dem Button, wo normalerweiße Login steht wo derzeit Fehler steht dieser Text angezeigt.

Zeile 534 wird angezeigt wenn man auf die Webseite kommt und der Chat bzw. der Login ist noch nicht richtig geladen, auch wird dies Verbinden angezeigt wenn man in den Chat eintritt bzw. dort verbindet er mit dem Server.

Wenn alles geladen ist, zeigt es Zeile 545 an. Wenn Fehlermeldungen aufgetaucht sind werden die Zeilen 560 567 553 oder 579 angezeigt. Was jedoch 579 bedeutet ist mir unklar, sowie auch die Zeilen 560 567 553

Zeile 450 ist diese, wenn jemand den Raum verlässt und 443 ist die Abfrage wenn jemand den Raum betritt.

--

Der restliche Text sind noch Abfragen zum Login, Dateien, Hintergründe und für das Applet selbst.


Hoffe ich konnte es gut erklären, bin nicht so gut in Erklärungen. Danke
Bitte warten ..
Mitglied: maretz
04.01.2011 um 18:24 Uhr
hast du denn die RTSystems.class in dem Ordner?

Und: Warum nimmst du dir nicht z.B. den Eclipse und baust damit? Das ist ne freie Java-IDE und macht dir solche sachen leichter... (meiner meinung nach!)
Bitte warten ..
Mitglied: Biber
04.01.2011 um 18:29 Uhr
Zitat von @maretz:
hast du denn die RTSystems.class in dem Ordner?
Oder wenigstens im Classpath?
Auch ohne Eclipse - du musst doch zumindest eine ClassNotFound-Exception deuten können... was könnte dir denn diese Fehlermeldung sagen wollen???

Noch mehr kopfschüttelnd als gestern
Biber
Bitte warten ..
Mitglied: Snowboarder1994
04.01.2011 um 19:21 Uhr
So, jetzt hat das mit dem compilieren geklappt.

Habe es nun wieder hochgeladen. Jetzt zeigt er an dem Button Fehler wo normal Eintreten stehen sollte diesen Fehler an:

Link: http://wakestars.onpw.de

Was bedeutet das, was ist da schief gegangen?
Bitte warten ..
Mitglied: maretz
04.01.2011 um 20:11 Uhr
Moin,

mein Firefox zeigt leider nur nen großen schwarzen Kasten an... Also entweder ist es sozusagen das Memory-Leak (black-hole im Speicher....) - oder der Firefox behandelt da was anders (was ja möglich ist).

Kannst du nicht einfach z.B. Screenshots auch immer unter deinem Chat einbinden bei dem die Fehlermeldungen zu sehen sind (oder die Screenshots hier posten)? Würde es ggf. etwas leichter machen - zumal die Ladezeit der JVM nicht sooo prickelt auf nem kleinen Netbook is..

Und nochmal: Ich würde dir dringend empfehlen ne richige Java-IDE zu nehmen. Du machst dir das Leben leichter ;)

@Biber: Naja - nich soviel den Kopf schütteln :) face-smile. Ich habe ja selbst auch irgendwann mit Java angefangen - daher versuche ich das mit der simplen "alle classes in einem Ordner"-Version... Sonst hast du nen Classpath, nen schönes Lib/ext-Verzeichnis, möglicherweise noch ganz andere Verzeichnisse usw... DAS ist grad zu Anfang immer ein wenig übel ... Und grad als Anfänger (davon gehe ich hier mal aus - so 1994 für das Alter steht denke ich mal liegt das halbwegs nahe) möchte man ja erstmal alles so machen wie man es in foren liest. Frag aber mal im Forum: Was brauch ich um Java zu programmieren? Antwort: JDK und nen Editor... (Wenn man fragt: was brauche ich um KOMFORTABEL Java zu programmieren sieht die Antwort ja ganz anders aus ;) ).

Und solang ich sehe das sich der TO auch Mühe gibt finde ich persönlich das noch besser als einige andere Beiträge (die ja oftmals dann nur noch die Wände deiner Rundablage zieren dürfen... wobei einige selbst dafür eigentlich noch nicht den nötigen Nährwert hätten ;) )
Bitte warten ..
Mitglied: Snowboarder1994
04.01.2011 um 21:44 Uhr
Moin,

so, habe jetzt mal einen Screenshot erstellt und hochgeladen:

http://wakestars.onpw.de/fehler2.png

Dies ist der Fehler.

gruß Markus
Bitte warten ..
Mitglied: Biber
04.01.2011 um 21:55 Uhr
Moin Schneebrettler,

niemand möchte dir zumuten, die Fehlermeldung vielleicht von deinem Bildschirm abzuschreiben und von Hand wieder neu einzutippen in einen Forumskommentar.
Obwohl wir dann um Tage, wenn nicht Wochen schneller wären.

Was spricht denn dagegen, die Screenshots hier zu posten - der Link auf einen Screenshot/eine .png-Datei auf deinem Server ist doch ohnehin nur bis morgen oder so gültig.

Und selbst wenn morgen erst morgen sein sollte - ich kann schon heute nichts erkennen, weil meine Unternehmenspolicy sagt:

Your request to "wakestars.onpw.de" was denied because of its content categorization: "Parked Domain".

Grüße
Biber
Bitte warten ..
Mitglied: maretz
04.01.2011 um 22:38 Uhr
Moin,

also dein Fehler liegt schonmal in diesem Block:

Ich würde jetzt wie folgt weitermachen: Hier mal ein paar Try-Catch-Blöcke spendieren und gucken wo genau er aussteigt....

Und nur nebenbei: Sollte jemals ein Informatik-Professor diesen Thread mit dir in Verbindung bringen dann würdest du jetzt schon durch jede Prüfung durchsemmeln....


SOWAS schreib bitte ganz schnell um in folgendes:

Ich habe da jetzt genau EIN Return eingefügt - und schon sieht man auf den ersten Blick: Aha - diese Try-Catch gehört zusammen. Egal welchen Editor / welche IDE du nimmst - du musst idR. NICHT nach Zeilen bezahlen. Also befolge die einfache Grundregel: EINE Anweisung pro Zeile!

Dasselbe hier:

Deinen connectServer-Aufruf übersieht man recht einfach. Dein Try-Catch-Block zu erkennen ist auch was für Leute die morgen bei Fielmann ne neue Brille möchten! SO könnte dein Code auch aussehen:


Wieder nur ein paar Return eingefügt - und etwas eingerückt - und schwupps, der Code kann ja sogar lesbar sein!

Dann:

Java ist zwar aus einer Kaffeesorte abgeleitet - aber das heisst nicht das man ein Kaffeekränzen machen sollte. Ein Fan vieler Worte braucht man da nicht zu sein. \"this\" verwendest du idR. nur dann wenn du lokale und Klassenvariablen hast. DU hast in dieser Funktion aber keine Variable connection. Du hast auch kein \"outStream\" - du referenzierst immer die Klassenvariablen von
Da du hier in der Funktion aber keine \"lokale\" Variable outStream übergibst kannst du das \"this\" wegwerfen. Im gegensatz zum Return darfst du das wegwerfen - es macht den Code einfach besser lesbar!

Was jetzt noch dazu kommt (aber vermutlich nicht für diesen Fehler):

Leider habe ich kein Laufwerk \"i\". Ich hab grad mal C und E. Und das auch nur weil ich grad unter Windows rumtobe - unter Linux hab ich nicht mal diese Laufwerke... Also: WAS zum Henker hat ein solcher Pfad in einem Betriebsystemunabhängigen Programm verloren? Das kann einfach nicht gut sein - und so wie ich auf der PNG deinen Browser einschätze könnte es sein das auch du kein Laufwerk I hast....

Nächster Punkt:

DAS ist nicht dein Ernst, oder? Das KANN einfach nicht dein Ernst sein - als ich das grad gesehen habe kam mir ehrlich gesagt das Frühstück wieder hoch... DAS VON LETZTER WOCHE! Also wenn du es schon Q&D machen möchtest:

Aber das mit einer Switch-Anweisung zu bauen die einfach nix enthält und nur wegen der fehlenden Break-Anweisung funktioniert - sorry, das is einfach nicht hinnehmbar!

Aber es geht noch weiter:
Seid wann ist 500 ein LONG-Wert? Also selbst bei alten Sprachen mit 16-Bit-Integer ging das ganz grob von -65500 bis +65500 (Biber: Schlag mich jetzt nicht, ich will nicht nachgucken ;)). Da brauch ich kein Long für. Du schaffst dir aber ggf. dadurch selbst probleme - wenn du nämlich mal nen Vergleicher startest.

Nächster Punkt:

Machen wir das im ersten Schritt mal schön:

Im case1 habe ich einfach nur deine If-Anweisung umgedreht. Schon spare ich mir klammern, schon spare ich mir das 2te Break im Block - schon macht das ganze etwas mehr sinn beim Lesen... Ok, die Klammern kann man sich auch so sparen wenn nur EINE Anweisung hinter der IF bzw. im Else-Teil kommt. Aber grade als Anfänger solltest du die ruhig setzen - da ist dann deutlicher das du z.B. oben das zweite Break in jedem fall hättest....

An der Stelle mach ich jetzt erstmal feierabend... denn danach kommen localObject1-? -> ein hoch auf sprechende Variablenbezeichnungen...

Ehrlich gesagt: Ich würde überlegen - wenn du sagst du hast den Code vor 1,5 Jahren geschrieben dann wäre es ggf. gut (auch für die Übung) das ganze nochmal zu machen. Diesmal in schön und sauber, ein paar Kommentare was wo passiert können auch nicht schaden,... Denn da momentan noch durchzusehen ist recht schwer - und dauert recht lange. Und ich befürchte einfach mal das die anderen Klassen ja nicht viel besser aussehen werden, oder? Ganz nebenbei gibt es heute schöne Frameworks die dir da die Arbeit erleichtern (GWT, Spring,....) -> so das du heute z.T. deutlich bessere Optionen hättest... (wenn du es etwas oversized dimensionieren möchtest kannst du das theroetisch auch in die Google App-Engine packen -> ich glaube du kommst da mit den Resourcen locker aus die du hast....). Allerdings kostet das eben wirklich Zeit sich einzuarbeiten - aber dafür hast du am Ende nen funktionierendes Programm welches du auch warten kannst...
Bitte warten ..
Mitglied: Snowboarder1994
05.01.2011 um 17:48 Uhr
Zitat von @maretz:
Moin,

also dein Fehler liegt schonmal in diesem Block:





Moin,

danke für deine Mühe, habe das mal alles überarbeitet. Wo liegt der Fehler in diesem Blog? An der falschen InetSocketAddress? Die anderen TextDateien sehen übersichtlicher aus als diese ;) zum Glück. Dann muss ich diese schon mal nicht bearbeiten.

InetSocketAddress localInetSocketAddress = new InetSocketAddress(\"89-149-241-72.internetserviceteam.com\",

Kann ich diese auch automatisch machen, das sie die Url automatisch holt und ich nicht immer ändern muss?

An dem Fehler hat sich leider nichts getan:
79c128d0c1998cb3491a7857a2e69f99 - Klicke auf das Bild, um es zu vergrößern


gruß Markus
Bitte warten ..
Mitglied: maretz
05.01.2011 um 21:00 Uhr
Moin,

du kannst die Konfiguration z.B. über eine XML-Datei einlesen lassen. Dann sparst du dir das - nur ob du das hinbekommst kann ich nicht beurteilen... Es ist generell aber möglich und (meines Erachtens!) auch nicht sonderlich schwer...
Bitte warten ..
Mitglied: Snowboarder1994
05.01.2011 um 21:36 Uhr
Ja werde ich schon hinbekommen. Jetzt kümmere ich mich erstmal um den Rest.

Wo liegt der Fehler in diesem Blog, so wie du oben beschrieben hast? Bzw. woran kann das liegen das diese Fehlermeldung immer noch ist? An dem Fehler wie auf http://wakestars.onpw.de/fehler2.png zu sehen ist, hat sich leider nichts getan.


Bitte warten ..
Mitglied: maretz
06.01.2011 um 08:05 Uhr
Moin,

ich warte mal bis du die punkte aus dem o.g. posting erledigt hast oder ne Begründung hast warum das nicht erfolgt...
Bitte warten ..
Mitglied: Snowboarder1994
06.01.2011 um 20:50 Uhr
Moin, habe den Rest korrigiert, aber da wo du geschrieben hast, das sich in diesem Blog der Fehler findet steige ich aus, ich check nicht was da falsch sein sollte, außer die falsche URL was da eingetragen ist.

Um bessere Beschreibung des Fehlers kann ich doch folgendes machen:

this.source.enterButton.setLabel("FEHLER" + LocalException1.getStackTrace());

Diesen Code ersetzen in diesen oder funktioniert das nicht?

JOptionPane.showMessageDialog(null, "Fehler", LocalException1.getStackTrace() , JOptionPane.ERROR_MESSAGE);


In Zeile 5 könnte er auch liegen.



gruß Markus.
Bitte warten ..
Heiß diskutierte Inhalte
Windows Server
Aufgabenplanung PowerShell Skript startet nicht
shooanVor 1 TagFrageWindows Server36 Kommentare

Hallo Zusammen, ich habe ein Skript bekommen das ich gerne so einstellen will das dieses beim Start des Exchangeservers aktiviert werden soll. Ein Ausführung ...

Internet
Webcam oder IPcam aus dem Internet erreichbar?
dertowaVor 1 TagFrageInternet17 Kommentare

Hallo zusammen, mal eine spezielle Frage, vielleicht kann jemand einen Dienst aufgrund guter Erfahrung empfehlen. Die Hündin einer guten Bekannten bekommt Nachwuchs und dafür ...

Windows Netzwerk
Computername erneut vergeben?
gelöst malkieVor 1 TagFrageWindows Netzwerk10 Kommentare

Guten Morgen, wir haben in der Firma Computernamen nach dem Muster: PC-Abteilung-Nummer (PC-IT-1) So, aktuell habe ich mal gelernt ganz früher, dass man den ...

Backup
Zusätzlicher Backupschutz gegen Ransomware Befall
staybbVor 1 TagFrageBackup4 Kommentare

Hallo zusammen, wir nutzen Veeam Backup & Replication als Backup für unsere Server und Files. Es werden immer on-side beim Kunden Backups auf einem ...

LAN, WAN, Wireless
Unterschiedliche IP-Adressbereiche im Netzwerk
achkleinVor 16 StundenFrageLAN, WAN, Wireless17 Kommentare

Hallo, ich stehe vor einem Problem mit der WLAN-Verbindung zum Router (Fritzbox Cable 6490). Das verbundene Notebook hat die Adresse 192.168.0.164, Gateway ist 192.168.0.149: ...

Router & Routing
Verkaufe apu4.d4 Set
pasu69Vor 1 TagAllgemeinRouter & Routing11 Kommentare

Guten Abend zusammen, ich hätte ein APU4.D4 Bundle abzugeben, dass ich erst Anfang März gekauft habe. Leider ist die Hardware tatsächlich zu schwach, um ...

Hardware
Temperaturüberwachung Raum
ingo1988Vor 1 TagFrageHardware8 Kommentare

Hallo, ich brauche eure Hilfe. Ich möchte gerne eine Temperaturüberwachung installieren. Es sollte über Wifi funktionieren, ist aber kein Muss. Außerdem soll eine Alarmbenachrichtigung ...

Microsoft Office
E-Mail kommt nicht an
gelöst HeinrichMVor 1 TagFrageMicrosoft Office10 Kommentare

Hallo zusammen, in der letzten Zeit häufen sich die Meldungen, dass E-Mails nicht ankommen. Es ist kein Muster zu erkennen. Mal kommt eine Mail ...