Fehler in meinem Chat Applet
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:
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:
import java.awt.Button;
import java.awt.Choice;
import java.awt.Color;
import java.awt.TextField;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.security.Key;
import java.util.Hashtable;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
class ConnectServer extends Thread
{
WakeStars source;
Socket connection;
InputStream inStream;
DataInputStream inDataStream;
OutputStream outStream;
DataOutputStream outDataStream;
String message;
ChatFrame cf;
boolean con;
String key;
String ppn = "";
String amsg = "";
Key secretKey;
Cipher desCipherDe;
Cipher desCipherEn;
CipherInputStream ciIn;
CipherOutputStream ciOut;
boolean crypted;
String tmp00;
String tmp01;
int tmp02;
Userliste uL;
Long lastMsg = Long.valueOf(System.currentTimeMillis());
private boolean conFailed = false;
String niick = "";
ConnectServer(WakeStars paramWakeStars)
{
this.source = paramWakeStars;
this.con = false;
this.crypted = false;
start();
connectServer();
}
public int getPasswd(String paramString) {
return Wakestars.getCode(WakeStars.getMD5(paramString), this.key);
}
public boolean fileTransfer(String paramString)
{
try
{
int i = 0;
FileInputStream localFileInputStream = new FileInputStream("I:\\" + paramString);
byte arrayOfByte = new byte[100];
int j = 0;
send("" + paramString + "" + new File(new StringBuilder().append("I:\\").append(paramString).toString()).length());
while (true)
{
j = localFileInputStream.read(arrayOfByte);
if (j == -1)
{
break;
}
this.outStream.write(arrayOfByte, 0, j);
}
}
catch (Exception localException) {
localException.printStackTrace();
return false;
}
return true;
}
public boolean fileTransfer(File paramFile)
{
try
{
int i = 0;
FileInputStream localFileInputStream = new FileInputStream(paramFile);
byte arrayOfByte = new byte[100];
int j = 0;
send("" + paramFile.getName() + "" + paramFile.length());
while (true)
{
j = localFileInputStream.read(arrayOfByte);
if (j == -1)
{
break;
}
this.outStream.write(arrayOfByte, 0, j);
}
}
catch (Exception localException) {
localException.printStackTrace();
return false;
}
return true;
}
private void errmsg(String paramString) {
if (this.cf != null)
{
this.cf.absenden.setText(paramString);
this.cf.absenden.setEditable(false);
this.cf.absenden.setEnabled(false);
}
}
public static String linkSafe(String paramString) {
if ((paramString.indexOf('"') >= 0) || (paramString.indexOf('<') >= 0) || (paramString.indexOf('>') >= 0) || (paramString.indexOf('\\') >= 0) || (paramString.indexOf('|') >= 0))
{
int i = paramString.length();
StringBuffer localStringBuffer = new StringBuffer(i + 3);
for (int j = 0; j < i; j++)
{
char c = paramString.charAt(j);
switch (c)
{
case '"':
case '<':
case '>':
case '\\':
case '|':
localStringBuffer.append('\\');
}
localStringBuffer.append(c);
}
return localStringBuffer.toString();
}
return paramString;
}
public void run()
{
StringTokenizer localStringTokenizer = null;
while (true)
{
this.message = "-";
while (!this.con)
try {
Thread.sleep(500L);
} catch (Exception localException1) {
}
try {
while (this.message.equals("-")) {
try {
Thread.sleep(20L); } catch (Exception localException2) {
}this.message = (this.inDataStream.readUTF() + "");
}
localStringTokenizer = new StringTokenizer(this.message, "");
act(localStringTokenizer);
}
catch (IOException localIOException)
{
errmsg("Verbindung zum Server wurde unterbrochen..");
try { Thread.sleep(2000L); } catch (Exception localException4) {
}connectServer();
}
catch (NoSuchElementException localNoSuchElementException)
{
localNoSuchElementException.printStackTrace();
}
catch (Exception localException3)
{
localException3.printStackTrace();
}
}
}
private void act(StringTokenizer paramStringTokenizer)
{
String str1 = paramStringTokenizer.nextToken();
try {
if (str1.equals("x"))
{
if (this.uL != null)
{
this.uL.setContext(paramStringTokenizer.nextToken().equals("T"));
}
}
else
{
Object localObject1;
if (str1.equals("filetransfer"))
{
localObject1 = new JFileChooser();
ExampleFileFilter localExampleFileFilter = new ExampleFileFilter();
localExampleFileFilter.addExtension("jpg");
localExampleFileFilter.addExtension("jpeg");
localExampleFileFilter.setDescription("Nur JPEG");
((JFileChooser)localObject1).setFileFilter(localExampleFileFilter);
int j = ((JFileChooser)localObject1).showOpenDialog(null);
if (j == 0) {
fileTransfer(((JFileChooser)localObject1).getSelectedFile());
}
}
else if (str1.equals("dk"))
{
this.key = paramStringTokenizer.nextToken();
}
else if (str1.equals("win"))
{
this.tmp00 = paramStringTokenizer.nextToken();
this.tmp01 = paramStringTokenizer.nextToken();
this.tmp02 = Integer.parseInt(paramStringTokenizer.nextToken());
switch (this.tmp02)
{
case 0:
this.tmp02 = -1;
if (!WakeStars.appli) break; WakeStars.openMsgWin(this.tmp00, this.tmp01, 20); break;
case 1:
this.tmp02 = 1;
if (!WakeStars.appli) break; WakeStars.openMsgWin(this.tmp00, this.tmp01, 2); break;
case 2:
this.tmp02 = 2;
if (!WakeStars.appli) break; WakeStars.openMsgWin(this.tmp00, this.tmp01, 1); break;
case 3:
this.tmp02 = 0;
if (!WakeStars.appli) break; WakeStars.openMsgWin(this.tmp00, this.tmp01, 0); break;
case 50:
this.tmp02 = 0;
break;
case 51:
this.tmp02 = 2;
}
if (!WakeStars.appli) JOptionPane.showMessageDialog(null, "<html><div style=\"background:url(http://89.149.208.95/chat/img/winbg.gif) no-repeat;\">" + this.tmp01 + "</div></html>", this.tmp00, this.tmp02);
}
else if (str1.equals("broadcast"))
{
localObject1 = paramStringTokenizer.nextToken();
if (((String)localObject1).equals("-")) this.cf.textpanelLight.Z("°BB°_Durchsage: " + paramStringTokenizer.nextToken()); else
this.cf.textpanelLight.Z("°BB°_Durchsage von " + (String)localObject1 + ": " + paramStringTokenizer.nextToken());
}
else if ((str1.equals("echo")) || (str1.equals("system")))
{
this.cf.textpanelLight.Z(paramStringTokenizer.nextToken());
}
else if (str1.equals("info"))
{
if (this.cf != null)
{
this.cf.absenden.setText(paramStringTokenizer.nextToken());
this.cf.absenden.setEditable(false);
this.cf.absenden.setEnabled(false);
}
}
else if (str1.equals("frame"))
{
new KF(this.source, paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), Integer.parseInt(paramStringTokenizer.nextToken()), Integer.parseInt(paramStringTokenizer.nextToken()), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.hasMoreTokens() ? paramStringTokenizer.nextToken() : "");
}
else if (str1.equals("sync"))
{
localObject1 = this.source.ht_dynframes.get(paramStringTokenizer.nextToken());
if (localObject1 != null)
{
((J)localObject1).Z(paramStringTokenizer.nextToken());
}
}
else
{
Object localObject3;
Object localObject4;
Object localObject5;
Object localObject6;
if (str1.equals("pub"))
{
if ((this.cf != null) &&
(this.cf.channel.equals(paramStringTokenizer.nextToken())))
{
this.niick = paramStringTokenizer.nextToken();
this.amsg = paramStringTokenizer.nextToken();
localObject1 = this.amsg;
if ((this.amsg.indexOf("http://") != -1) && (this.amsg.indexOf("|http://") == -1) && (this.amsg.indexOf(">http://") == -1))
{
int i = this.amsg.indexOf("http://");
localObject3 = this.amsg.substring(0, i);
localObject4 = "";
localObject5 = "";
localObject6 = "";
if (this.amsg.indexOf(" ", i) == -1)
{
localObject6 = this.amsg.substring(this.amsg.indexOf("http://"));
localObject4 = "°>" + (String)localObject6 + "|" + (String)localObject6 + "<°";
}
else {
localObject6 = this.amsg.substring(this.amsg.indexOf("http://"), this.amsg.indexOf(" ", i));
localObject4 = "°>" + (String)localObject6 + "|" + (String)localObject6 + "<°";
localObject5 = this.amsg.substring(this.amsg.indexOf(" ", i));
}
localObject1 = (String)localObject3 + (String)localObject4 + (String)localObject5;
}
this.cf.textpanelLight.Z("_°>_h" + WakeStars.addProtection(this.niick) + "|/w " + WakeStars.addProtection(this.niick) + "<°:_ " + (String)localObject1);
}
}
else if (str1.equals("pubdo"))
{
if ((this.cf != null) &&
(this.cf.channel.equals(paramStringTokenizer.nextToken())))
{
this.niick = paramStringTokenizer.nextToken();
this.cf.textpanelLight.Z("_°>_h" + this.niick + "|/w " + this.niick + "<°_ " + paramStringTokenizer.nextToken());
}
}
else if (str1.equals("channellist"))
{
this.source.myChannel = this.source.channelDisplay.getSelectedIndex();
this.source.channelDisplay.removeAll();
ChatFrame.cChannels.removeAll();
System.out.println("Got channels");
while (paramStringTokenizer.hasMoreTokens())
{
localObject1 = paramStringTokenizer.nextToken();
this.source.chl.addRoom((String)localObject1);
ChatFrame.cChannels.addItem((String)localObject1);
}
this.source.channelDisplay.select(this.source.myChannel);
this.source.channelDisplay2.setText("Treffpunkt");
}
else if (str1.equals("destroy"))
{
this.cf.dispose();
this.connection.close();
if (paramStringTokenizer.hasMoreTokens())
errmsg(paramStringTokenizer.nextToken());
else
errmsg("Du wurdest rausgeworfen!");
destroy();
}
else if (str1.equals("frm"))
{
new RTFv2(paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), false, this);
}
else if (str1.equals("url"))
{
this.source.chatURL(paramStringTokenizer.nextToken());
}
else if (str1.equals("channel"))
{
localObject1 = paramStringTokenizer.nextToken();
Object localObject2;
if (((String)localObject1).equals("bgc"))
{
localObject2 = paramStringTokenizer.nextToken();
}
else if (((String)localObject1).equals("bgc"))
{
if (this.cf != null)
{
if (paramStringTokenizer.nextToken().equals(this.cf.channel))
{
localObject2 = new StringTokenizer(paramStringTokenizer.nextToken(), ",");
this.cf.bgc = new Color(Integer.parseInt(((StringTokenizer)localObject2).nextToken()), Integer.parseInt(((StringTokenizer)localObject2).nextToken()), Integer.parseInt(((StringTokenizer)localObject2).nextToken()));
this.cf.invalidate();
this.cf.repaint();
}
}
}
else if (((String)localObject1).equals("new"))
{
localObject2 = paramStringTokenizer.nextToken();
localObject3 = new Hashtable();
while (!((String)localObject2).equals("-"))
{
((Hashtable)localObject3).put(localObject2, new Button(paramStringTokenizer.nextToken()));
localObject2 = paramStringTokenizer.nextToken();
}
if (this.cf == null)
{
this.cf = new ChatFrame(this, paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), Integer.parseInt(paramStringTokenizer.nextToken()), Integer.parseInt(paramStringTokenizer.nextToken()), true, paramStringTokenizer.nextToken(), Integer.parseInt(paramStringTokenizer.nextToken()), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken().equals("T"), paramStringTokenizer.nextToken().equals("T"), Integer.parseInt(paramStringTokenizer.nextToken()), paramStringTokenizer.nextToken().equals("T"), (Hashtable)localObject3, paramStringTokenizer.hasMoreTokens() ? Integer.parseInt(paramStringTokenizer.nextToken()) : 0, paramStringTokenizer.hasMoreTokens() ? Integer.parseInt(paramStringTokenizer.nextToken()) : 0);
}
else {
this.cf.changeChannel(paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), Integer.parseInt(paramStringTokenizer.nextToken()), Integer.parseInt(paramStringTokenizer.nextToken()), true, paramStringTokenizer.nextToken(), Integer.parseInt(paramStringTokenizer.nextToken()), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken(), paramStringTokenizer.nextToken().equals("T"), paramStringTokenizer.nextToken().equals("T"), Integer.parseInt(paramStringTokenizer.nextToken()), paramStringTokenizer.nextToken().equals("T"), (Hashtable)localObject3);
this.cf.absenden.setEnabled(true);
this.cf.absenden.setEditable(true);
this.cf.absenden.setText("");
}
}
else if (((String)localObject1).equals("msg"))
{
if ((this.cf != null) &&
(this.cf.channel.equals(paramStringTokenizer.nextToken())))
this.cf.textpanelLight.Z(paramStringTokenizer.nextToken());
}
else if (((String)localObject1).equals("bgm"))
{
WakeStars.AUDIOURL = paramStringTokenizer.nextToken();
}
else if (((String)localObject1).equals("user"))
{
localObject2 = paramStringTokenizer.nextToken();
localObject3 = paramStringTokenizer.nextToken();
if ((this.cf != null) &&
(((String)localObject3).equals(this.cf.channel)))
{
if (((String)localObject2).equals("icons"))
{
localObject4 = paramStringTokenizer.nextToken();
((Vector)this.uL.vusericons.elementAt(this.uL.vusers.indexOf(localObject4))).removeAllElements();
while (paramStringTokenizer.hasMoreTokens())
{
((Vector)this.uL.vusericons.elementAt(this.uL.vusers.indexOf(localObject4))).add(this.source.img(paramStringTokenizer.nextToken()));
}
this.uL.repaint();
}
else if (((String)localObject2).equals("in"))
{
localObject4 = paramStringTokenizer.nextToken();
localObject5 = new StringBuffer();
this.cf.textpanelLight.Z("°R°>> " + (String)localObject4 + " eilt herbei.");
localObject6 = new StringTokenizer(paramStringTokenizer.nextToken(), ",");
}
else if (((String)localObject2).equals("out"))
{
localObject4 = paramStringTokenizer.nextToken();
localObject5 = new StringBuffer();
this.cf.textpanelLight.Z("°R°>> " + (String)localObject4 + " hat den Raum verlassen.");
this.uL.removeUser((String)localObject4);
if (((String)localObject4).equals(this.cf.nickName))
this.cf.dispose();
}
else if (((String)localObject2).equals("all"))
{
this.uL.vusers.removeAllElements();
this.uL.vusercolors.removeAllElements();
this.uL.vusericons.removeAllElements();
localObject4 = new StringBuffer();
localObject6 = "";
String str2 = "";
while (paramStringTokenizer.hasMoreTokens()) {
if (this.cf == null)
continue;
localObject6 = paramStringTokenizer.nextToken();
if (((String)localObject6).equals("-")) {
continue;
}
Vector localVector = new Vector();
localObject5 = new StringTokenizer(paramStringTokenizer.nextToken(), ",");
str2 = paramStringTokenizer.nextToken();
while (!str2.equals("-"))
{
localVector.add(this.source.img(str2));
str2 = paramStringTokenizer.nextToken();
}
this.uL.addUser((String)localObject6, new Color(Integer.parseInt(((StringTokenizer)localObject5).nextToken()), Integer.parseInt(((StringTokenizer)localObject5).nextToken()), Integer.parseInt(((StringTokenizer)localObject5).nextToken())), localVector);
}
this.uL.repaint();
}
}
}
}
else if (str1.equals("cc")) {
WakeStars.allImages = new Hashtable();
}
else if (str1.equals("prv"))
{
this.ppn = paramStringTokenizer.nextToken();
if (this.cf.getPrivateFrame(this.ppn) != null)
{
this.cf.getPrivateFrame(this.ppn).tp.Z("_°>_h" + this.ppn + "|/w " + this.ppn + "<°:_ " + paramStringTokenizer.nextToken());
}
else if (this.cf != null) this.cf.textpanelLight.Z("_°RR>_h" + this.ppn + "|/w " + this.ppn + "<° (privat):_°r° " + paramStringTokenizer.nextToken());
}
else if (str1.equals("prvs"))
{
this.ppn = paramStringTokenizer.nextToken();
if (this.cf.getPrivateFrame(this.ppn) != null)
{
this.cf.getPrivateFrame(this.ppn).tp.Z("_°>_h" + this.cf.nickName + "|/w " + this.cf.nickName + "<°:_°r° " + paramStringTokenizer.nextToken());
}
else if (this.cf != null)
this.cf.textpanelLight.Z("°RR°_Du (privat an " + this.ppn + "):_°r° " + paramStringTokenizer.nextToken());
}
else if (str1.equals("snd"))
{
if (WakeStars.AUDIOPLAYER != null)
WakeStars.AUDIOPLAYER.STOP();
WakeStars.AUDIOPLAYER = new Audio(paramStringTokenizer.nextToken(), true);
}
}
}
} catch (Exception localException) {
}
}
private void conFail() {
if (!this.conFailed)
{
this.conFailed = true;
if (WakeStars.appli) WakeStars.openMsgWin("Keine Verbindung zum Server...", "Es konnte keine Verbindung zum Server hergestellt werden. Moeglicherweise wird ein Update vorgenommen. Bitte pruefen Sie auch Ihre Internetverbindung. ", 0);
}
}
public void connectServer()
{
try
{
this.source.enterButton.setLabel("Verbinden ...");
this.connection = new Socket();
InetSocketAddress localInetSocketAddress = new InetSocketAddress("89-149-241-72.internetserviceteam.com", this.source.port);
this.connection.connect(localInetSocketAddress, 3000);
this.outStream = this.connection.getOutputStream();
this.outDataStream = new DataOutputStream(this.outStream);
this.inStream = this.connection.getInputStream();
this.inDataStream = new DataInputStream(this.inStream);
this.connection.setSoTimeout(0);
this.con = true;
this.conFailed = false;
this.source.enterButton.setLabel("Eintreten");
this.outStream.write("WakeStars ChatKlient\r\n".getBytes());
try {
send("" + this.source.getDocumentBase()); } catch (Exception localException2) {
send("");
}
}
catch (SocketTimeoutException localSocketTimeoutException) {
errmsg("Keine Verbindung zum Server!");
conFail();
try { Thread.sleep(20000L); } catch (Exception localException3) {
}connectServer();
}
catch (SocketException localSocketException)
{
errmsg("Unerwarteter Fehler beim Verbinden zum Server");
conFail();
try { Thread.sleep(20000L); } catch (Exception localException4) {
}connectServer();
}
catch (EOFException localEOFException)
{
errmsg("Die Verbindung wurde beendet.");
try { Thread.sleep(20000L); } catch (Exception localException5) {
}connectServer();
}
catch (IOException localIOException)
{
errmsg("");
System.out.println(">" + localIOException);
try { Thread.sleep(20000L); } catch (Exception localException6) {
}connectServer();
}
catch (Exception localException1) {
this.source.enterButton.setLabel("FEHLER");
}
}
public boolean send(String paramString)
{
try {
this.outDataStream.writeUTF(paramString);
this.outDataStream.flush();
this.ciOut.flush(); } catch (Exception localException) {
return false;
}return true;
}
public void F(ConnectServer paramConnectServer, String paramString1, String paramString2, int paramInt1, int paramInt2, boolean paramBoolean)
{
new Win(paramConnectServer.source, paramString1, paramString2, paramInt1, paramInt2, paramBoolean);
}
public void closeConnection()
{
try {
this.connection.close();
}
catch (IOException localIOException)
{
}
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 157909
Url: https://administrator.de/forum/fehler-in-meinem-chat-applet-157909.html
Ausgedruckt am: 22.04.2025 um 13:04 Uhr
25 Kommentare
Neuester Kommentar
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
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
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....
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?
public static void main(String args) {
for (int i=0;i<10;i++) {
System.out.println("test");
if(i<9) {
System.out.println("ka");
if(i<8) {
System.out.println("kk");
}
}
System.out.println("ff");
}
}
ODER
public static void main(String args) {
for (int i=0;i<10;i++) {
System.out.println("test");
if(i<9) {
System.out.println("ka");
if(i<8) {
System.out.println("kk");
}
}
System.out.println("ff");
}
}
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....
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, ...)
}
catch (Exception localException1) {
this.source.enterButton.setLabel("FEHLER");
}
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, ...)
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:
Lag der Code Weihnachten unterm Baum und stand echt dein Name dran?
Kopfschüttelnd
Biber
maretz meint bestimmt:
.....
catch (Exception localException1) {
localException1.printStackTrace();
}
...
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
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....
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....
C:\>javac ConnectServer.java
ConnectServer.java:31: cannot find symbol
symbol : class RTSystems
location: class ConnectServer
RTSystems source;
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!)
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
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
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
. 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 ;) )
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
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 ;) )
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:
Grüße
Biber
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
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...
also dein Fehler liegt schonmal in diesem Block:
this.source.enterButton.setLabel(\"Verbinden ...\");
this.connection = new Socket();
InetSocketAddress localInetSocketAddress = new InetSocketAddress(\"89-149-241-72.internetserviceteam.com\", this.source.port);
this.connection.connect(localInetSocketAddress, 3000);
this.outStream = this.connection.getOutputStream();
this.outDataStream = new DataOutputStream(this.outStream);
this.inStream = this.connection.getInputStream();
this.inDataStream = new DataInputStream(this.inStream);
this.connection.setSoTimeout(0);
this.con = true;
this.conFailed = false;
this.source.enterButton.setLabel(\"Eintreten\");
this.outStream.write(\"RTSystems ChatKlient\\r\\n\".getBytes());
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....
try {
send(\"\" + this.source.getDocumentBase()); } catch (Exception localException2) {
send(\"\");
}
SOWAS schreib bitte ganz schnell um in folgendes:
try {
send(\"\" + this.source.getDocumentBase());
} catch (Exception localException2) {
send(\"\");
}
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:
catch (SocketTimeoutException localSocketTimeoutException) {
errmsg(\"Keine Verbindung zum Server!\");
conFail();
try { Thread.sleep(20000L); } catch (Exception localException3) {
}connectServer();
}
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:
catch (SocketTimeoutException localSocketTimeoutException) {
errmsg(\"Keine Verbindung zum Server!\");
conFail();
try {
Thread.sleep(20000L);
} catch (Exception localException3) {
// Warum du hier keine Fehlerbehandlung machst wird ein ewiges Geheimnis bleiben....
}
connectServer();
}
Wieder nur ein paar Return eingefügt - und etwas eingerückt - und schwupps, der Code kann ja sogar lesbar sein!
Dann:
this.source.enterButton.setLabel(\"Verbinden ...\");
this.connection = new Socket();
InetSocketAddress localInetSocketAddress = new InetSocketAddress(\"89-149-241-72.internetserviceteam.com\", this.source.port);
this.connection.connect(localInetSocketAddress, 3000);
this.outStream = this.connection.getOutputStream();
this.outDataStream = new DataOutputStream(this.outStream);
this.inStream = this.connection.getInputStream();
this.inDataStream = new DataInputStream(this.inStream);
this.connection.setSoTimeout(0);
this.con = true;
this.conFailed = false;
this.source.enterButton.setLabel(\"Eintreten\");
this.outStream.write(\"RTSystems ChatKlient\\r\\n\".getBytes());
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
class ConnectServer extends Thread
{
RTSystems source;
Socket connection;
InputStream inStream;
DataInputStream inDataStream;
OutputStream outStream;
DataOutputStream outDataStream;
String message;
ChatFrame cf;
boolean con;
String key;
...
Was jetzt noch dazu kommt (aber vermutlich nicht für diesen Fehler):
FileInputStream localFileInputStream = new FileInputStream(\"I:\\\\\" + paramString);
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:
switch (c)
{
case \'\"\':
case \'<\':
case \'>\':
case \'\\\\\':
case \'|\':
localStringBuffer.append(\'\\\\\');
}
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:
if ((localStringBuffer.equals(\"<\") || (localStringBuffer.equals(\">\")....) localStringBuffer.append(\"\\\\\");
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:
Thread.sleep(500L);
Nächster Punkt:
switch (this.tmp02)
{
case 0:
this.tmp02 = -1;
if (!RTSystems.appli) break; RTSystems.openMsgWin(this.tmp00, this.tmp01, 20); break;
case 1:
this.tmp02 = 1;
if (!RTSystems.appli) break; RTSystems.openMsgWin(this.tmp00, this.tmp01, 2); break;
Machen wir das im ersten Schritt mal schön:
switch (this.tmp02) {
case 0: {
this.tmp02 = -1;
if (!RTSystems.appli) {
break; // Dieses Break dient auch nur dazu das es da ist, oder?
} else {
RTSystems.openMsgWin(this.tmp00, this.tmp01, 20);
}
break;
}
case 1: { // Hier mal etwas umgeschrieben - es geht ja auch in schön....
this.tmp02 = 1;
if (RTSystems.appli) RTSystems.openMsgWin(this.tmp00, this.tmp01, 2);
break;
}
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...