# Applet auf lokalem Rechner mit der EingabeAufforderung Starten



## Developer_X (28. Mrz 2009)

Hi, also ich hab mein Programm soweit fertig, und möchte nun
das Programm als Applet starten, lokal auf meinem Rechner, mit der Eingabeaufforderung
aber wenn ich das starte, zeigt die Fehlermeldung mir immer wieder
auf die Erste Zeile,
und in der ersten Zeile
importet meine ChatKlasse
import.java.applet.Applet;
was mache ich falsch, die Klasse ist extends Applet
und um sie anzuzeigen habe ich mich für das MainFrame entschiéden, ich habe auch zum KlasPath Java3D Angefügt, damit ich über die Eingabeaufforderung das Mainframe verwenden kann, aber das geht nicht schaut hier mal die FehlerException

```
ECHO ist eingeschaltet (ON).

F:\FUTUR.PROGRAMS\Chat.Programm>set PATH=C:\Programme\Java\jdk1.6.0_11\bin; C:\W
indows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\QuickTime\Q
TSystem\;C:\Program Files\Haufe\iDesk\iDeskService\;C:\Program Files\T-Online\T-
Online_Software_6\Basis-Software\Basis2\;C:\DJGPP\BIN;C:\Program Files\Common Fi
les\Nero\Lib\;C:\Program Files\Common Files\Nero\Lib\

F:\FUTUR.PROGRAMS\Chat.Programm>javac -cp F:\Imports\j3dcore.jar;F:\Imports\j3du
tils.jar;F:\Imports\vecmath.jar; JavaChat_1.java
Note: JavaChat_1.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

F:\FUTUR.PROGRAMS\Chat.Programm>java -cp F:\Imports\j3dcore.jar;F:\Imports\j3dut
ils.jar;F:\Imports\vecmath.jar; JavaChat_1
[highlight]
Exception in thread "Thread-4" java.lang.NullPointerException
        at JavaChat_1.start(JavaChat_1.java:1)
        at com.sun.j3d.utils.applet.MainFrame.run(MainFrame.java:270)
        at java.lang.Thread.run(Thread.java:619)
[/highlight]
F:\FUTUR.PROGRAMS\Chat.Programm>pause
Drücken Sie eine beliebige Taste . . .
```
Ich hab das halt mit ner Batch Datei geschrieben, für alle, die meine Klasse "JavaChat_1" nicht kennen, der Quellcode ist als erstes gepostet in folgendem Thread:
[highlight="Java"]
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Event;
import java.awt.Font;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;
import com.sun.j3d.utils.applet.MainFrame;

public class JavaChat_1 extends Applet implements Runnable
{

		public static final int PORT = 1;
		Socket socket;
		DataInputStream in;
		PrintStream out;
		TextField inputfield;
		TextArea outputarea;
		Thread thread;

	String name;

	public JavaChat_1()
	{

		File f = new File("F:/FUTUR.PROGRAMS/Chat/Saves.txt");
		name = getContents(f);
		new chatserver();
		inputfield = new TextField();
		outputarea = new TextArea();
		outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));
		outputarea.setEditable(false);

		this.setLayout(new BorderLayout());
		this.add("South", inputfield);
		this.add("Center", outputarea);

		this.setBackground(Color.cyan);
		this.setForeground(Color.cyan);
		inputfield.setBackground(Color.black);
		outputarea.setBackground(Color.black);		

		JMenuBar bar = new JMenuBar();bar.setBackground(Color.black);this.add(bar,BorderLayout.NORTH);

		JMenu m = new JMenu("Start");m.setForeground(Color.cyan);bar.add(m);

		JMenuItem i = new JMenuItem("Benutzternamen ändern");i.setForeground(Color.cyan);i.setBackground(Color.black);m.add(i);
		i.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				b1ActionPerformed(evt);
			}
			private void b1ActionPerformed(ActionEvent evt)
			{
				new MainFrame(new Ändern(),200,250);
			}
	    });
		JMenuItem o = new JMenuItem("PORT ändern");o.setForeground(Color.cyan);o.setBackground(Color.black);m.add(o);
		o.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				b1ActionPerformed(evt);
			}
			private void b1ActionPerformed(ActionEvent evt)
			{
				new MainFrame(new Porter(),200,250);
			}
	    });

		JMenuItem i1 = new JMenuItem("Beenden");i1.setForeground(Color.cyan);i1.setBackground(Color.black);m.add(i1);
		i1.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				b1ActionPerformed(evt);
			}
			private void b1ActionPerformed(ActionEvent evt)
			{
				System.exit(0);
			}
	    });

		JTextArea a = new JTextArea();
		a.setText(" Java_Chat_1.0");a.setEnabled(false); bar.add(a);a.setBackground(Color.black);

		JMenu me = new JMenu("Hilfe");
		me.setForeground(Color.cyan);
		bar.add(me);

		JMenuItem m1 = new JMenuItem("Hilfe aufrufen");
		m1.setBackground(Color.black); m1.setForeground(Color.cyan);
		me.add(m1);

		i1.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				b1ActionPerformed(evt);
			}
			private void b1ActionPerformed(ActionEvent evt)
			{
            new MainFrame (new Help(),200,250);			
            }
	    });

	}

	public void start()
	{
		try
		{
			socket = new Socket(this.getCodeBase().getHost(), PORT);
			in = new DataInputStream(socket.getInputStream());
			out = new PrintStream(socket.getOutputStream());
		} catch (IOException e)
		{
			this.showStatus(e.toString());
			say("Verbindung zum Server fehlgeschlagen!");
		}

		say(name+" ist der ChatSitzung im Port:"+PORT+" beigetreten.");

		if (thread == null)
		{
			thread = new Thread(this);
			thread.setPriority(Thread.MIN_PRIORITY);
			thread.start();
		}
	}


	public void stop()
	{
		try
		{
			socket.close();
		} catch (IOException e)
		{
			this.showStatus(e.toString());
		}

		if ((thread !=null) && thread.isAlive())
		{
			thread.stop();
			thread = null;
		}
	}


	public void run()
	{
		String line;

		try
		{
			while(true)
			{
				line = in.readLine();
				if(line!=null)
					outputarea.appendText(line+'\n' );
			}
		} catch (IOException e) { say("Verbindung zum Server abgebrochen"); }
	}

	public boolean action(Event e, Object what)
	{
		if (e.target==inputfield)
		{
			String inp=(String)name+": "+ e.arg;

			out.println(inp);
			inputfield.setText("");
			return true;
		}

		return false;
	}


	public void say(String msg)
	{
		outputarea.appendText("*** "+msg+" ***\n");
	}

	static public String getContents(File aFile) 
	 {
		    StringBuilder contents = new StringBuilder();  
		    try {
		      BufferedReader input =  new BufferedReader(new FileReader(aFile));
		      try {
		        String line = null; 
		        while (( line = input.readLine()) != null){
		          contents.append(line);
		        }
		      }
		      finally {
		        input.close();
		      }
		    }
		    catch (IOException ex){
		      ex.printStackTrace();
		    }

		    return contents.toString();
		  }
	public static void main(String[]args)
	{
		new MainFrame(new JavaChat_1(),200,250);
	}
}

[/highlight]

@ADMIN
seht ihr, ich kann das mit HightLight jetzt auch!

bei mir klappt das in Eclipse ohne Probleme, aber was mache ich denn falsch?


----------



## Schandro (28. Mrz 2009)

> aber was mache ich denn falsch?


1. Du machst Drippelposts
2. Du vermischst AWT und Swing
3. Du willst ein Applet als Application benutzen
4. Deine Fehlermeldung ist zuwenig aussagekräftig, (In Zeile 1 bei den Importen soll eine NullPointerException auftreten?)

€dit:
5. Du hältst dich nicht an die Coding Conventions:


> new chatserver();


----------



## Developer_X (28. Mrz 2009)

was meinst du mit "new Chatserver(); geht nicht"
das geht, bei mir in Eclipse, nur hier nciht, local


----------



## hdi (28. Mrz 2009)

> new Chatserver(); geht nicht



hat keiner gesagt. Er meinte nur, du hälst dich nicht an die Code-Conventions.
Man schreibt 

new ChatServer()

und nicht 

new chatserver oder new Chatserver

Das nennt sich "CamelCase", und das ist eben die Namens-Konvention für Klassen.
Genauso wie für Variablen die Namens-Konvention "camelCase" ist, also nicht wie bei dir:

somearea

sondern:

someArea

...aber das hat man dir ja schon 54 mal gesagt...

Das sind "nur" Konventionen, das hat nix damit zu tun ob dein Programm funktioniert oder nicht


----------



## Developer_X (28. Mrz 2009)

danke hdi


----------



## Developer_X (28. Mrz 2009)

Aber verdammt noch mal, irgendwie muss man doch ein Applet auf dem PC starten können, ohne das gleich in eine HTML einbetten zu müssen oder?
Wenn ja wie?
bitte ohne eclipse
so 
mit hilfe einer batch datei gestartet

BITTE!!!
Ich versteh nicht was ich falsch mache
...


----------



## Illuvatar (28. Mrz 2009)

Und was spricht gegen die HTML? Applets sind nun mal dafür gedacht, innerhalb eines HTML-Dokuments zu stehen. Wenn du dann den appletviewer verwendest, hast du es immerhin auch außerhalb vom Browser.
Irgendwie geht es vermutlich schon auch ohne ein HTML-Dokument. Wenn man aber bedenkt, dass das HTML-Dokument typischerweise 8 Zeilen hat, und das andere ein ziemlicher Krampf ist, würde mir die Entscheidung nicht schwer fallen.


----------



## diggaa1984 (28. Mrz 2009)

finde das hier nun nich wirklich schwer 
hab zwar kein plan von applets, aber das hier würde mir reichen um was nich im browser anzuschaun.

Und wenns  nur über AppletViewer+HTML oder eben im Browser komfortabel geht sollte man doch nich auf Krampf versuchen das anders zu machen, weil das kost dann einfach nur Nerven. Was stört denn am HMTL?

Der-Java-Appletviewer super simpel


----------



## Schandro (28. Mrz 2009)

Oh mann developer, warum willst du den unbedingt ein Applet als Applikation starten? Weil du irgendwo einen Code für ein Applet rauskopiert hast, es aber nicht schaffst ihn z.b. auf ein JFrame umzuschreiben? Soll jetzt keine unterstellung sein, sondern nur ne Vermutung


----------



## Spacerat (28. Mrz 2009)

Ich bin mir nicht sicher, ob ich das mal so bringen soll...
So ungefähr sieht der Krampf einer HybridApplikation (Applet und Anwendung in einem) aus (for copy and paste).[highlight=java]import java.applet.Applet;
import java.applet.AppletContext;
import java.applet.AppletStub;
import java.applet.AudioClip;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.sound.sampled.AudioFormat.Encoding;

public final class HybridApplication
extends Applet
{
  private static final long serialVersionUID = 4881953554409778241L;
  private final HashMap<String, InputStream> appStreams = new HashMap<String, InputStream>();
  private final HashMap<String, String> appParams = new HashMap<String, String>();

  public final boolean applicationRun;

  private HybridApplication(boolean application)
  {
    applicationRun = application;
  }

  public HybridApplication()
  {
    this(false);
  }

//----------------------------------------------------
// Applet-Implementation Anfang
// ...


// Applet-Implementation Ende
//----------------------------------------------------

  public static void main(String ... args)
  {
    final Frame f = new Frame("Hybrid Application Demo");
    final HybridApplication applet = new HybridApplication(true);
    final Enumeration<Applet> appletEnum = new Enumeration<Applet>()
    {
      public boolean hasMoreElements()
      {
        return false;
      }

      public Applet nextElement()
      {
        return null;
      }
    };
    final AppletContext context = new AppletContext()
    {
      public Applet getApplet(String name)
      {
        return null; // not in application mode
      }

      public Enumeration<Applet> getApplets()
      {
        return appletEnum;
      }

      public AudioClip getAudioClip(URL url)
      {
        try {
          final Clip clip = AudioSystem.getClip();
          AudioInputStream ais = AudioSystem.getAudioInputStream(url);
          AudioFormat af = ais.getFormat();
          if(Encoding.ALAW.equals(af.getEncoding())
          || Encoding.ULAW.equals(af.getEncoding())) {
            af = new AudioFormat(
              Encoding.PCM_SIGNED,
              af.getSampleRate(),
              af.getSampleSizeInBits() * 2,
              af.getChannels(),
              af.getFrameSize() * 2,
              af.getFrameRate(),
              true
              );
            ais = AudioSystem.getAudioInputStream(af, ais);
          }
          clip.open(ais);
          return new AudioClip()
          {
            public void loop()
            {
              clip.loop(-1);
            }

            public void play()
            {
              clip.start();
            }

            public void stop()
            {
              clip.stop();
            }
          };
        } catch(LineUnavailableException e) {
          e.printStackTrace();
          return null;
        } catch(IOException e) {
          e.printStackTrace();
          return null;
        } catch (UnsupportedAudioFileException e) {
          e.printStackTrace();
          return null;
        }
      }

      public Image getImage(URL url)
      {
        return Toolkit.getDefaultToolkit().getImage(url);
      }

      public InputStream getStream(String key)
      {
        return applet.appStreams.get(key);
      }

      public Iterator<String> getStreamKeys()
      {
        return applet.appStreams.keySet().iterator();
      }

      public void setStream(String key, InputStream stream)
      throws IOException
      {
        if(key != null && key.length() > 0) {
          applet.appStreams.put(key, stream);
        }
      }

      public void showDocument(URL url)
      {
        // no effect
      }

      public void showDocument(URL url, String target)
      {
        // no effect
      }

      public void showStatus(String status)
      {
        // no effect
      }

    };
    AppletStub stub = new AppletStub()
    {
      public void appletResize(int width, int height)
      {
      }

      public AppletContext getAppletContext()
      {
        return context;
      }

      public URL getCodeBase()
      {
        URL rc = HybridApplication.class.getResource("HybridApplication.class");
        return rc;
      }

      public URL getDocumentBase()
      {
        URL rc = HybridApplication.class.getResource("HybridApplication.class");
        if(rc.getProtocol().equalsIgnoreCase("jar")) {
          try {
            String tmp = rc.toString().substring(4, rc.toString().indexOf("!/"));
            tmp = rc.toString().replaceAll("jar:", "").replaceAll("file:/", "file://");
            tmp = tmp.substring(0, tmp.lastIndexOf("!/"));
            rc = new URL(null, tmp);
          } catch(MalformedURLException e) {
            e.printStackTrace();
            rc = null;
          }
        }
        return rc;
      }

      public String getParameter(String name)
      {
        return applet.appParams.get(name);
      }

      public boolean isActive()
      {
        return f.isActive();
      }

    };
    applet.setStub(stub);
    if(args != null && args.length > 0) {
      String[] pars;
      for(String arg : args) {
        pars = arg.split("=");
        if(pars.length == 1) pars = new String[] {pars[0], "true"};
        applet.appParams.put(pars[0].toLowerCase(), pars[1]);
      }
    }
    f.setLayout(new GridLayout(1, 1, 0, 0));
    String arg;
    int width, height;
    try {
      width = ((arg = applet.getParameter("width")) != null)? Integer.parseInt(arg) : 800;
    } catch(NumberFormatException e) {
      width = 800;
    }
    try {
      height = ((arg = applet.getParameter("height")) != null)? Integer.parseInt(arg) : 600;
    } catch(NumberFormatException e) {
      height = 600;
    }
    Dimension d = new Dimension(width, height);
    applet.setPreferredSize(d);
    applet.setSize(d);
    f.addWindowListener(new WindowListener()
    {
      public void windowActivated(WindowEvent e)
      {
        applet.start();
      }

      public void windowClosed(WindowEvent e)
      {
        System.exit(0);
      }

      public void windowClosing(WindowEvent e)
      {
        applet.stop();
        applet.destroy();
        f.dispose();
      }

      public void windowDeactivated(WindowEvent e)
      {
        applet.stop();
      }

      public void windowDeiconified(WindowEvent e)
      {
        applet.start();
      }

      public void windowIconified(WindowEvent e)
      {
        applet.stop();
      }

      public void windowOpened(WindowEvent e)
      {
      }
    });
    applet.init();
    f.add(applet);
    f.pack();
    f.setVisible(true);
  }
}[/highlight]wie? barbarisch implementiert? Was solls... DX wird's hoffentlich lesen können. Wen man bedenkt, was er uns immer liefert...


----------



## diggaa1984 (28. Mrz 2009)

du stehst auf schmerzen oder


----------



## Spacerat (29. Mrz 2009)

Na klar... 

... äh in welcher Hinsicht? So barbarisch die Implementation auch ist... sie funktioniert. Ja auch als Applet (trotz z.B. "Toolkit.getImage()" -> SicherheitsManager wird dort abgefragt). Ausserdem bekommt das Applet in einer HTML-Seite einen ganz anderen "Stub" (und damit auch einen anderen "Context"). Das einzige was mir (nicht wirklich) Schmerzen bereitet, ist die Ahnung, das DX damit nicht hinbekommt. Wenn der wüsste, das er eigentlich nur die "main"-Methode kopieren braucht und den Namen der Klasse ändern muss...


----------



## FatFire (29. Mrz 2009)

:lol: Aber wenn Du ihn hättest verwirren wollen, hätte es doch auch ein Zweizeiler getan. Möglicherweise auch ein Einzeiler, wer weiß...


----------



## Developer_X (29. Mrz 2009)

Deins funktioniert in Eclipse bei mir wieder, aber leider nicht so, mit Eingabeaufforderung:
[highlight=Java]

import java.applet.Applet;
import java.applet.AppletContext;
import java.applet.AppletStub;
import java.applet.AudioClip;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.Socket;
import java.net.URL;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.sound.sampled.AudioFormat.Encoding;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;

import com.sun.j3d.utils.applet.MainFrame;
public class JavaChat_1 extends Applet implements Runnable
{

		public static final int PORT = 1;
		Socket socket;
		DataInputStream in;
		PrintStream out;
		TextField inputfield;
		TextArea outputarea;
		Thread thread;

		 private final HashMap<String, InputStream> appStreams = new HashMap<String, InputStream>();
		  private final HashMap<String, String> appParams = new HashMap<String, String>();

	String name;

	public JavaChat_1()
	{

		File f = new File("F:/FUTUR.PROGRAMS/Chat/Saves.txt");
		name = getContents(f);
		new chatserver();
		inputfield = new TextField();
		outputarea = new TextArea();
		outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));
		outputarea.setEditable(false);

		this.setLayout(new BorderLayout());
		this.add("South", inputfield);
		this.add("Center", outputarea);

		this.setBackground(Color.cyan);
		this.setForeground(Color.cyan);
		inputfield.setBackground(Color.black);
		outputarea.setBackground(Color.black);		

		JMenuBar bar = new JMenuBar();bar.setBackground(Color.black);this.add(bar,BorderLayout.NORTH);

		JMenu m = new JMenu("Start");m.setForeground(Color.cyan);bar.add(m);

		JMenuItem i = new JMenuItem("Benutzternamen ändern");i.setForeground(Color.cyan);i.setBackground(Color.black);m.add(i);
		i.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				b1ActionPerformed(evt);
			}
			private void b1ActionPerformed(ActionEvent evt)
			{
				new MainFrame(new Ändern(),200,250);
			}
	    });
		JMenuItem o = new JMenuItem("PORT ändern");o.setForeground(Color.cyan);o.setBackground(Color.black);m.add(o);
		o.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				b1ActionPerformed(evt);
			}
			private void b1ActionPerformed(ActionEvent evt)
			{
				new MainFrame(new Porter(),200,250);
			}
	    });

		JMenuItem i1 = new JMenuItem("Beenden");i1.setForeground(Color.cyan);i1.setBackground(Color.black);m.add(i1);
		i1.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				b1ActionPerformed(evt);
			}
			private void b1ActionPerformed(ActionEvent evt)
			{
				System.exit(0);
			}
	    });

		JTextArea a = new JTextArea();
		a.setText(" Java_Chat_1.0");a.setEnabled(false); bar.add(a);a.setBackground(Color.black);

		JMenu me = new JMenu("Hilfe");
		me.setForeground(Color.cyan);
		bar.add(me);

		JMenuItem m1 = new JMenuItem("Hilfe aufrufen");
		m1.setBackground(Color.black); m1.setForeground(Color.cyan);
		me.add(m1);

		m1.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				b1ActionPerformed(evt);
			}
			private void b1ActionPerformed(ActionEvent evt)
			{
            new MainFrame (new Help(),200,250);			
            }
	    });

	}

	public void start()
	{
		try
		{
			socket = new Socket(this.getCodeBase().getHost(), PORT);
			in = new DataInputStream(socket.getInputStream());
			out = new PrintStream(socket.getOutputStream());
		} catch (IOException e)
		{
			this.showStatus(e.toString());
			say("Verbindung zum Server fehlgeschlagen!");
		}

		say(name+" ist der ChatSitzung im Port:"+PORT+" beigetreten.");

		if (thread == null)
		{
			thread = new Thread(this);
			thread.setPriority(Thread.MIN_PRIORITY);
			thread.start();
		}
	}


	public void stop()
	{
		try
		{
			socket.close();
		} catch (IOException e)
		{
			this.showStatus(e.toString());
		}

		if ((thread !=null) && thread.isAlive())
		{
			thread.stop();
			thread = null;
		}
	}


	public void run()
	{
		String line;

		try
		{
			while(true)
			{
				line = in.readLine();
				if(line!=null)
					outputarea.appendText(line+'\n' );
			}
		} catch (IOException e) { say("Verbindung zum Server abgebrochen"); }
	}

	public boolean action(Event e, Object what)
	{
		if (e.target==inputfield)
		{
			String inp=(String)name+": "+ e.arg;

			out.println(inp);
			inputfield.setText("");
			return true;
		}

		return false;
	}


	public void say(String msg)
	{
		outputarea.appendText("*** "+msg+" ***\n");
	}

	static public String getContents(File aFile) 
	 {
		    StringBuilder contents = new StringBuilder();  
		    try {
		      BufferedReader input =  new BufferedReader(new FileReader(aFile));
		      try {
		        String line = null; 
		        while (( line = input.readLine()) != null){
		          contents.append(line);
		        }
		      }
		      finally {
		        input.close();
		      }
		    }
		    catch (IOException ex){
		      ex.printStackTrace();
		    }

		    return contents.toString();
		  }
	 public static void main(String ... args)
	  {
	    final Frame f = new Frame("Hybrid Application Demo");
	    final JavaChat_1 applet = new JavaChat_1();
	    final Enumeration<Applet> appletEnum = new Enumeration<Applet>()
	    {
	      public boolean hasMoreElements()
	      {
	        return false;
	      }

	      public Applet nextElement()
	      {
	        return null;
	      }
	    };
	    final AppletContext context = new AppletContext()
	    {
	      public Applet getApplet(String name)
	      {
	        return null; // not in application mode
	      }

	      public Enumeration<Applet> getApplets()
	      {
	        return appletEnum;
	      }

	      public AudioClip getAudioClip(URL url)
	      {
	        try {
	          final Clip clip = AudioSystem.getClip();
	          AudioInputStream ais = AudioSystem.getAudioInputStream(url);
	          AudioFormat af = ais.getFormat();
	          if(Encoding.ALAW.equals(af.getEncoding())
	          || Encoding.ULAW.equals(af.getEncoding())) {
	            af = new AudioFormat(
	              Encoding.PCM_SIGNED,
	              af.getSampleRate(),
	              af.getSampleSizeInBits() * 2,
	              af.getChannels(),
	              af.getFrameSize() * 2,
	              af.getFrameRate(),
	              true
	              );
	            ais = AudioSystem.getAudioInputStream(af, ais);
	          }
	          clip.open(ais);
	          return new AudioClip()
	          {
	            public void loop()
	            {
	              clip.loop(-1);
	            }

	            public void play()
	            {
	              clip.start();
	            }

	            public void stop()
	            {
	              clip.stop();
	            }
	          };
	        } catch(LineUnavailableException e) {
	          e.printStackTrace();
	          return null;
	        } catch(IOException e) {
	          e.printStackTrace();
	          return null;
	        } catch (UnsupportedAudioFileException e) {
	          e.printStackTrace();
	          return null;
	        }
	      }

	      public Image getImage(URL url)
	      {
	        return Toolkit.getDefaultToolkit().getImage(url);
	      }

	      public InputStream getStream(String key)
	      {
	        return applet.appStreams.get(key);
	      }

	      public Iterator<String> getStreamKeys()
	      {
	        return applet.appStreams.keySet().iterator();
	      }

	      public void setStream(String key, InputStream stream)
	      throws IOException
	      {
	        if(key != null && key.length() > 0) {
	          applet.appStreams.put(key, stream);
	        }
	      }

	      public void showDocument(URL url)
	      {
	        // no effect
	      }

	      public void showDocument(URL url, String target)
	      {
	        // no effect
	      }

	      public void showStatus(String status)
	      {
	        // no effect
	      }

	    };
	    AppletStub stub = new AppletStub()
	    {
	      public void appletResize(int width, int height)
	      {
	      }

	      public AppletContext getAppletContext()
	      {
	        return context;
	      }

	      public URL getCodeBase()
	      {
	        URL rc = JavaChat_1.class.getResource("HybridApplication.class");
	        return rc;
	      }

	      public URL getDocumentBase()
	      {
	        URL rc = JavaChat_1.class.getResource("HybridApplication.class");
	        if(rc.getProtocol().equalsIgnoreCase("jar")) {
	          try {
	            String tmp = rc.toString().substring(4, rc.toString().indexOf("!/"));
	            tmp = rc.toString().replaceAll("jar:", "").replaceAll("file:/", "file://");
	            tmp = tmp.substring(0, tmp.lastIndexOf("!/"));
	            rc = new URL(null, tmp);
	          } catch(MalformedURLException e) {
	            e.printStackTrace();
	            rc = null;
	          }
	        }
	        return rc;
	      }

	      public String getParameter(String name)
	      {
	        return applet.appParams.get(name);
	      }

	      public boolean isActive()
	      {
	        return f.isActive();
	      }

	    };
	    applet.setStub(stub);
	    if(args != null && args.length > 0) {
	      String[] pars;
	      for(String arg : args) {
	        pars = arg.split("=");
	        if(pars.length == 1) pars = new String[] {pars[0], "true"};
	        applet.appParams.put(pars[0].toLowerCase(), pars[1]);
	      }
	    }
	    f.setLayout(new GridLayout(1, 1, 0, 0));
	    String arg;
	    int width, height;
	    try {
	      width = ((arg = applet.getParameter("width")) != null)? Integer.parseInt(arg) : 800;
	    } catch(NumberFormatException e) {
	      width = 800;
	    }
	    try {
	      height = ((arg = applet.getParameter("height")) != null)? Integer.parseInt(arg) : 600;
	    } catch(NumberFormatException e) {
	      height = 600;
	    }
	    Dimension d = new Dimension(width, height);
	    applet.setPreferredSize(d);
	    applet.setSize(d);
	    f.addWindowListener(new WindowListener()
	    {
	      public void windowActivated(WindowEvent e)
	      {
	        applet.start();
	      }

	      public void windowClosed(WindowEvent e)
	      {
	        System.exit(0);
	      }

	      public void windowClosing(WindowEvent e)
	      {
	        applet.stop();
	        applet.destroy();
	        f.dispose();
	      }

	      public void windowDeactivated(WindowEvent e)
	      {
	        applet.stop();
	      }

	      public void windowDeiconified(WindowEvent e)
	      {
	        applet.start();
	      }

	      public void windowIconified(WindowEvent e)
	      {
	        applet.stop();
	      }

	      public void windowOpened(WindowEvent e)
	      {
	      }
	    });
	    applet.init();
	    f.add(applet);
	    f.pack();
	    f.setVisible(true);
	  }

}


[/highlight]
PS:
Spacerat, das hat mir schon etwas weitergeholfen, aber nicht ganz


----------



## FatFire (29. Mrz 2009)

Aha, zwei Sätze (der eine in Deinem berühmt berüchtigten Idiotendeutsch, oder wie das heißt), 470 Zeilen Code, keine Fehlermeldung...was erwartest Du jetzt?
Problem gelöst? Oder soll jetzt jeder die Anwendung kompilieren und raten, was Dein Problem ist? Oder noch besser Zeile für Zeile des Codes durchgehen und schauen wo noch ein Fehler sein könnte?
Sollen wir bei der Gelegenheit auch die Klassen nachbauen, die uns zum Testen fehlen? Davon mal ab:
[HIGHLIGHT="Java"]new Ändern()[/HIGHLIGHT]
AAAAAAAAAHHHHHHH, Umlaute in Klassennamen, das ist echt übel. Erlaubt, aber übel.

Kein Gruß mehr dafür
FatFire

PS: Kauf Dir doch bitte mal ein Buch und lese es (langsam hab ich sogar das Gefühl, es ist egal was für eins, lernen würdest Du so oder so noch was). Das Forum hier ist kein interaktiver Java-Lernkurs.


----------



## Spacerat (29. Mrz 2009)

Mal langsam... Er hat ja immerhin schon das gemacht, was ich kaum erwartet hätte... (steht in meinem Beitrag mit "Spoiler" added. Wer's nicht lesen kann, einfach gesammten beitrag markieren, der Text geht hinter "hinbekommt" noch weiter...). Ok... Ich hab' da was angefangen, ich werd's beenden...[highlight=java]import java.applet.Applet;
import java.applet.AppletContext;
import java.applet.AppletStub;
import java.applet.AudioClip;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.Socket;
import java.net.URL;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.sound.sampled.AudioFormat.Encoding;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;
import com.sun.j3d.utils.applet.MainFrame;

public class JavaChat_1
extends Applet
implements Runnable
{
	private static final long serialVersionUID = 8513817504469370403L;
	private final HashMap<String, InputStream> appStreams = new HashMap<String, InputStream>();
	private final HashMap<String, String> appParams = new HashMap<String, String>();

	public final boolean applicationRun;
    public static final int PORT = 1;
    Socket socket;
    DataInputStream in;
    PrintStream out;
    TextField inputfield;
    TextArea outputarea;
    Thread thread;

    String name;

	private JavaChat_1(boolean application)
	{
		applicationRun = application;
        File f = new File("F:/FUTUR.PROGRAMS/Chat/Saves.txt");
        name = getContents(f);
        new chatserver();  // <--------- Klasse fehlt!!!! (CamelCase!!!)
        inputfield = new TextField();
        outputarea = new TextArea();
        outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));
        outputarea.setEditable(false);

        this.setLayout(new BorderLayout());
        this.add("South", inputfield);
        this.add("Center", outputarea);

        this.setBackground(Color.cyan);
        this.setForeground(Color.cyan);
        inputfield.setBackground(Color.black);
        outputarea.setBackground(Color.black);      

        JMenuBar bar = new JMenuBar();bar.setBackground(Color.black);this.add(bar,BorderLayout.NORTH);

        JMenu m = new JMenu("Start");m.setForeground(Color.cyan);bar.add(m);

        JMenuItem i = new JMenuItem("Benutzternamen ändern");i.setForeground(Color.cyan);i.setBackground(Color.black);m.add(i);
        i.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                b1ActionPerformed(evt);
            }
            private void b1ActionPerformed(ActionEvent evt)
            {
                new MainFrame(new Ändern(),200,250); // <----- Klasse fehlt (Umlaute gehen gar nicht!!!)
            }
        });
        JMenuItem o = new JMenuItem("PORT ändern");o.setForeground(Color.cyan);o.setBackground(Color.black);m.add(o);
        o.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                b1ActionPerformed(evt);
            }
            private void b1ActionPerformed(ActionEvent evt)
            {
                new MainFrame(new Porter(),200,250); // <----- Klasse fehlt
            }
        });

        JMenuItem i1 = new JMenuItem("Beenden");i1.setForeground(Color.cyan);i1.setBackground(Color.black);m.add(i1);
        i1.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                b1ActionPerformed(evt);
            }
            private void b1ActionPerformed(ActionEvent evt)
            {
                System.exit(0);
            }
        });

        JTextArea a = new JTextArea();
        a.setText(" Java_Chat_1.0");a.setEnabled(false); bar.add(a);a.setBackground(Color.black);

        JMenu me = new JMenu("Hilfe");
        me.setForeground(Color.cyan);
        bar.add(me);

        JMenuItem m1 = new JMenuItem("Hilfe aufrufen");
        m1.setBackground(Color.black); m1.setForeground(Color.cyan);
        me.add(m1);

        m1.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                b1ActionPerformed(evt);
            }
            private void b1ActionPerformed(ActionEvent evt)
            {
            new MainFrame (new Help(),200,250); // <----- Klasse fehlt     
            }
        });
	}

    public JavaChat_1()
    {
        this(true);
    }

    public void start()
    {
        try
        {
            socket = new Socket(this.getCodeBase().getHost(), PORT);
            in = new DataInputStream(socket.getInputStream());
            out = new PrintStream(socket.getOutputStream());
        } catch (IOException e)
        {
            this.showStatus(e.toString());
            say("Verbindung zum Server fehlgeschlagen!");
        }

        say(name+" ist der ChatSitzung im Port:"+PORT+" beigetreten.");

        if (thread == null)
        {
            thread = new Thread(this);
            thread.setPriority(Thread.MIN_PRIORITY);
            thread.start();
        }
    }


    public void stop()
    {
        try
        {
            socket.close();
        } catch (IOException e)
        {
            this.showStatus(e.toString());
        }

        if ((thread !=null) && thread.isAlive())
        {
            thread.interrupt();
            thread = null;
        }
    }


    public void run()
    {
        String line;

        try
        {
            while(true)
            {
                line = in.readUTF(); //.readLine();
                if(line!=null)
                    outputarea.append(line+'\n' );
            }
        } catch (IOException e) { say("Verbindung zum Server abgebrochen"); }
    }

    public boolean action(Event e, Object what)
    {
        if (e.target==inputfield)
        {
            String inp=(String)name+": "+ e.arg;

            out.println(inp);
            inputfield.setText("");
            return true;
        }

        return false;
    }


    public void say(String msg)
    {
        outputarea.append("*** "+msg+" ***\n");
    }

    static public String getContents(File aFile) 
     {
            StringBuilder contents = new StringBuilder();  
            try {
              BufferedReader input =  new BufferedReader(new FileReader(aFile));
              try {
                String line = null; 
                while (( line = input.readLine()) != null){
                  contents.append(line);
                }
              }
              finally {
                input.close();
              }
            }
            catch (IOException ex){
              ex.printStackTrace();
            }

            return contents.toString();
          }
     public static void main(String ... args)
      {
        final Frame f = new Frame("Hybrid Application Demo");
        final JavaChat_1 applet = new JavaChat_1();
        final Enumeration<Applet> appletEnum = new Enumeration<Applet>()
        {
          public boolean hasMoreElements()
          {
            return false;
          }

          public Applet nextElement()
          {
            return null;
          }
        };
        final AppletContext context = new AppletContext()
        {
          public Applet getApplet(String name)
          {
            return null; // not in application mode
          }

          public Enumeration<Applet> getApplets()
          {
            return appletEnum;
          }

          public AudioClip getAudioClip(URL url)
          {
            try {
              final Clip clip = AudioSystem.getClip();
              AudioInputStream ais = AudioSystem.getAudioInputStream(url);
              AudioFormat af = ais.getFormat();
              if(Encoding.ALAW.equals(af.getEncoding())
              || Encoding.ULAW.equals(af.getEncoding())) {
                af = new AudioFormat(
                  Encoding.PCM_SIGNED,
                  af.getSampleRate(),
                  af.getSampleSizeInBits() * 2,
                  af.getChannels(),
                  af.getFrameSize() * 2,
                  af.getFrameRate(),
                  true
                  );
                ais = AudioSystem.getAudioInputStream(af, ais);
              }
              clip.open(ais);
              return new AudioClip()
              {
                public void loop()
                {
                  clip.loop(-1);
                }

                public void play()
                {
                  clip.start();
                }

                public void stop()
                {
                  clip.stop();
                }
              };
            } catch(LineUnavailableException e) {
              e.printStackTrace();
              return null;
            } catch(IOException e) {
              e.printStackTrace();
              return null;
            } catch (UnsupportedAudioFileException e) {
              e.printStackTrace();
              return null;
            }
          }

          public Image getImage(URL url)
          {
            return Toolkit.getDefaultToolkit().getImage(url);
          }

          public InputStream getStream(String key)
          {
            return applet.appStreams.get(key);
          }

          public Iterator<String> getStreamKeys()
          {
            return applet.appStreams.keySet().iterator();
          }

          public void setStream(String key, InputStream stream)
          throws IOException
          {
            if(key != null && key.length() > 0) {
              applet.appStreams.put(key, stream);
            }
          }

          public void showDocument(URL url)
          {
            // no effect
          }

          public void showDocument(URL url, String target)
          {
            // no effect
          }

          public void showStatus(String status)
          {
            // no effect
          }

        };
        AppletStub stub = new AppletStub()
        {
          public void appletResize(int width, int height)
          {
          }

          public AppletContext getAppletContext()
          {
            return context;
          }

          public URL getCodeBase()
          {
            URL rc = JavaChat_1.class.getResource("JavaChat_1.class");
            return rc;
          }

          public URL getDocumentBase()
          {
            URL rc = JavaChat_1.class.getResource("JavaChat_1.class");
            if(rc.getProtocol().equalsIgnoreCase("jar")) {
              try {
                String tmp = rc.toString().substring(4, rc.toString().indexOf("!/"));
                tmp = rc.toString().replaceAll("jar:", "").replaceAll("file:/", "file://");
                tmp = tmp.substring(0, tmp.lastIndexOf("!/"));
                rc = new URL(null, tmp);
              } catch(MalformedURLException e) {
                e.printStackTrace();
                rc = null;
              }
            }
            return rc;
          }

          public String getParameter(String name)
          {
            return applet.appParams.get(name);
          }

          public boolean isActive()
          {
            return f.isActive();
          }

        };
        applet.setStub(stub);
        if(args != null && args.length > 0) {
          String[] pars;
          for(String arg : args) {
            pars = arg.split("=");
            if(pars.length == 1) pars = new String[] {pars[0], "true"};
            applet.appParams.put(pars[0].toLowerCase(), pars[1]);
          }
        }
        f.setLayout(new GridLayout(1, 1, 0, 0));
        String arg;
        int width, height;
        try {
          width = ((arg = applet.getParameter("width")) != null)? Integer.parseInt(arg) : 800;
        } catch(NumberFormatException e) {
          width = 800;
        }
        try {
          height = ((arg = applet.getParameter("height")) != null)? Integer.parseInt(arg) : 600;
        } catch(NumberFormatException e) {
          height = 600;
        }
        Dimension d = new Dimension(width, height);
        applet.setPreferredSize(d);
        applet.setSize(d);
        f.addWindowListener(new WindowListener()
        {
          public void windowActivated(WindowEvent e)
          {
            applet.start();
          }

          public void windowClosed(WindowEvent e)
          {
            System.exit(0);
          }

          public void windowClosing(WindowEvent e)
          {
            applet.stop();
            applet.destroy();
            f.dispose();
          }

          public void windowDeactivated(WindowEvent e)
          {
            applet.stop();
          }

          public void windowDeiconified(WindowEvent e)
          {
            applet.start();
          }

          public void windowIconified(WindowEvent e)
          {
            applet.stop();
          }

          public void windowOpened(WindowEvent e)
          {
          }
        });
        applet.init();
        f.add(applet);
        f.pack();
        f.setVisible(true);
      }

}[/highlight]@Developer_X: Hast dich also wider erwarten, nicht ins Boxhorn jagen lassen, nur die "main" kopiert und die Klassennamen geändert (ok.. die String-Bezüge hast du vergessen... egal). Zum Problem: Warum könnte eine Klasse eine Exception in Zeile 1 werfen, da stehen doch nur Importe? Korrekt! Unter anderem auch Importe zu eigenen Klassen in eigenen Paketen. Eclipse (eigentlich jede IDE) bezieht solche Dinge beim kompilieren automatisch mit ein, was eine Eingabeaufforderung nicht tut. Im konkretem Beispiel geht es um folgende Klasse (auch im Quelltext markiert):
1. chatserver (beachte "CamelCase" -> umbenennen in "ChatServer")
2. Ändern (Umlaute gehen gar nicht... ok... wenn man weiss, was man damit erreichen will schon)
3. Porter
4. Help
Da diese Klassen in der Importliste nicht auftauchen liegen sie also im selben Verzeichnis (Paket) wie JavaChat_1, sind aber wohl nicht kompiliert. (Klassenpfad um ";." erweitert gibt Aufschluss). Wenn diese also nicht kompiliert sind muss dieses vor der Ausführung von JavaChat_1 noch passieren. Die Batchdatei ändert sich wie folgt:
	
	
	
	





```
set PATH=C:\Programme\Java\jdk1.6.0_11\bin; C:\W
indows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\QuickTime\Q
TSystem\;C:\Program Files\Haufe\iDesk\iDeskService\;C:\Program Files\T-Online\T-
Online_Software_6\Basis-Software\Basis2\;C:\DJGPP\BIN;C:\Program Files\Common Fi
les\Nero\Lib\;C:\Program Files\Common Files\Nero\Lib\

javac -cp F:\Imports\j3dcore.jar;F:\Imports\j3dutils.jar;F:\Imports\vecmath.jar;.; chatserver.java

javac -cp F:\Imports\j3dcore.jar;F:\Imports\j3dutils.jar;F:\Imports\vecmath.jar;.; Ändern.java // genau hier könnte es Probleme mit Umlauten geben

javac -cp F:\Imports\j3dcore.jar;F:\Imports\j3dutils.jar;F:\Imports\vecmath.jar;.; Porter.java

javac -cp F:\Imports\j3dcore.jar;F:\Imports\j3dutils.jar;F:\Imports\vecmath.jar;.; Help.java

javac -cp F:\Imports\j3dcore.jar;F:\Imports\j3dutils.jar;F:\Imports\vecmath.jar;.; JavaChat_1.java

java -cp F:\Imports\j3dcore.jar;F:\Imports\j3dutils.jar;F:\Imports\vecmath.jar;.; JavaChat_1
```
Alles in allem dürfte das die Lösung für dieses Problem sein. Die meisten deiner anderen löst es jedoch nicht. Da hilft nunmal nur :rtfm: :rtfm: :rtfm:
@Edit:
@Developer_X: Von "13"-Järigen kann man meines Erachtens schon ein wenig Selbstständigkeit erwarten. So 'ne PN an einem anderen User gab' mir grad ein wenig zu denken... Kannst du dir eigentlich 'ne Welt ohne Internet (das bedeutet, es gibt keine Foren) vorstellen? Ich schon (musste ja ohne anfangen). Plötzlich gibt es nur noch Bücher. Und wenn man Interessehalber etwas lernen will, dann nur mit Büchern. versuchs mal... gar nicht schwer... dauert nur länger als 





			
				unbek. Verfasser hat gesagt.:
			
		

> Ich will lernen... mach mir das mal


----------



## Developer_X (29. Mrz 2009)

wenn ichs ändere klappts immer noch nicht:
das Problem ist immer wenn ich den Code von der Eingabeaufforderung kopieren will, schreibt der immer mehr, 
also hab ich mal nur bei starten des Programmes, den inhalt als JPG Datei gespeichert, sorry, aber anders gehts nicht

FehlerMeldung:
https://java-rayman.dev.java.net/files/documents/9616/127742/error.JPG


----------



## Ark (29. Mrz 2009)

Ich glaube, solange das kommunikative Problem mit Developer_X besteht (welches er selbst wahrscheinlich gar nicht erkennt), sollte ihm nicht auf Code-Ebene geholfen werden.

*hoff, dass alle mitmachen*

Ark


----------



## hdi (29. Mrz 2009)

> *hoff, dass alle mitmachen*





> Ok... Ich hab' da was angefangen, ich werd's beenden... (Spacerat)


sieht schlecht aus 

Developer, mal ne Frage an dich:
Bist du es nicht langsam leid, dass deine Programme nie funktionieren? Dass du hier
für jeden Kack einen Thread erstellen musst, und es dann nach 10 Antworten noch 
immer nicht klappt?

Es muss dir doch mal klar werden, wie schwer du es dir selber machst.
Warum, ja das frag ich mich, *warum* liest du nicht einfach mal die ersten
paar Kapitel der Java-Insel? Why :bahnhof:

Warum schraubst du an Java 3D und Threads herum, wenn du nich mal eine Exception lesen kannst?

Findest du nicht, dass du deine Frezeit verschwendest mit diesem Unsinn?
Lern das doch mal, dann _weisst_ du was du tust, und musst nicht ständig raten.

Du bist jetzt hier seit, ka, 2 Monaten unterwegs? Bis jetzt hättest du schon die
halbe Java-Insel lernen können. Aber du stellst noch immer Fragen wie am ersten Tag.
Also ich weiss ja nicht was du so mit deiner Zukunft vorhast, aber wenn du jemals auch
nur halbwegs anständig programmieren können willst, musst du deine Einstellung gegenüber
dieser Sache ändern.

Und wenn dir hier jmd etwas antwortet, dann versuch das wenigstens mal 1 Minute zu
verstehen. Wie oft wurde dir hier gesagt, dass du ein Applet als Applikation starten willst?
Und wie scheisse und unsinnig das ist?
Aber du ignorierst es schön und heulst uns hier weiter mit deinen Fehlern rum :noe:

Mein Gott... Hilfe erwarten ist schön und gut, dafür gibt's dieses Forum. Aber annehmen
sollte man sie halt dann *irgendwann.*

JAVA-INSEL FOR THE WIN!


----------



## Developer_X (29. Mrz 2009)

ok hdi
und wie bitte schön kann ich ein applet als applikation starten,?
mit Spacerats code gehts leider ent


----------



## hdi (29. Mrz 2009)

> und wie bitte schön kann ich ein applet als applikation starten,?


----------



## diggaa1984 (29. Mrz 2009)

darf ich nochma zwischenwerfen als fast nur-mitleser .. was dich daran stört nen Appletviewer zu nutzen und ne 8 zeilen-html zu bauen?! appletviewer is schon von haus aus in java vorhanden als tool. musst nichma gross was ändern, nur ne winzige html baun, dein applet normal coden und keine kopfstände machen


----------



## bugmenot (29. Mrz 2009)

hdi hat gesagt.:


> JAVA-INSEL FOR THE WIN!



Eh, hdi, was soll das eigentlich dauernd, wirst du dafür bezahlt?
Das "Java ist auch eine Insel" Buch ist zum Java lernen richtig schlecht. Hast du überhaupt mal ein einziges Kapitel darin gelesen oder empfiehlst du das nur vom Hörensagen weiter?
Ich bin mir sicher, dass alle, die Java inzwischen ganz gut können und mal in dieses Buch reingeschaut haben, da nicht widersprechen werden.
Im übrigen ist dein Java Verständnis offenbar auch nicht viel größer als das von D-X, wer hier seine "Freizeit verschwendet" ist mir also auch nicht wirklich klar.
Sorry, aber deine Beiträge muss ich dauernd lesen hier im Forum, das nervt so, das musste jetzt mal gesagt werden >:[


----------



## diggaa1984 (29. Mrz 2009)

off-topic :autsch:, aber ich muss sagen das Buch hat mir einen super Einstieg bereitet. Gut mitlerweile reicht mir google und JDK-API aber das Buch is imho keineswegs schlecht.


----------



## hdi (29. Mrz 2009)

> Eh, hdi, was soll das eigentlich dauernd, wirst du dafür bezahlt?


Leider nein.



> Das "Java ist auch eine Insel" Buch ist zum Java lernen richtig schlecht. Hast du überhaupt mal ein einziges Kapitel darin gelesen oder empfiehlst du das nur vom Hörensagen weiter?


Teils, teils.



> Ich bin mir sicher, dass alle, die Java inzwischen ganz gut können und mal in dieses Buch reingeschaut haben, da nicht widersprechen werden.


Würde ich pauschal nicht sagen. Das liegt im Moment in 8.Auflage vor, soviel
"schlechtes" Zeug findest du da nicht (mehr).



> Im übrigen ist dein Java Verständnis offenbar auch nicht viel größer als das von D-X,


Unabähngig davon, ob das stimmt oder nicht: Worauf berufst du dich mit dieser Aussage?



> wer hier seine "Freizeit verschwendet" ist mir also auch nicht wirklich klar.


Du kennst die ganze Vorgeschichte nicht. Zumindest gehe ich davon aus mit deinen 38 Posts.



> Sorry, aber deine Beiträge muss ich dauernd lesen hier im Forum, das nervt so, das musste jetzt mal gesagt werden >:[


Seit wann stalkest du mir denn so hinterher  Also ich kenn dich gar nicht.
Welche Beiträge meinst du? Sowas schreibe ich ausschliesslich an Developer, und da wären
wir wieder bei: Du kennst die Vorgeschichte nicht.

Also... bitte fahr mich nich so grob an... Ich kann verstehen, dass du es nicht cool findest
wenn man so mit jemandem redet, wie ich es ab und an mit Developer tue.
Aber.. Du kennst.., naja du weisst schon


----------



## 0x7F800000 (29. Mrz 2009)

fullack @diggaa1984 was die letzten beiden Beiträge betrifft
Insel ist doch okay, bietet imho ganz guten Überblick, zumindest zu Grundlagen.


----------



## hdi (29. Mrz 2009)

..und noch ein Nachtrag:

Dieses "for the win" war mit Absicht so geschrieben, eben weil ich ihm das schon tausend mal
empfohlen habe. Ich überlege nur, wie ich es ihm noch schmackhafter machen kann,
mal dieses Buch zu lesen. 
Und zwar nicht, weil es die Java-Insel ist, sondern weil es *ein* Buch ist, das wär
ja mal n Anfang bei ihm...


----------



## Wildcard (29. Mrz 2009)

hdi hat gesagt.:


> Du kennst die ganze Vorgeschichte nicht. Zumindest gehe ich davon aus mit deinen 38 Posts.
> 
> 
> Seit wann stalkest du mir denn so hinterher  Also ich kenn dich gar nicht.
> Welche Beiträge meinst du? Sowas schreibe ich ausschliesslich an Developer, und da wären


Du sprichst mit einem 'Bugmenot', sprich öffentlichem Account, du kannst daher nicht abschätzen wie viele Postings der Autor hat, oder wie lange er schon hier unterwegs ist.
Ansonsten, bitte back to topic, sofern es hier eins gibt :autsch:


----------



## hdi (29. Mrz 2009)

Achso, ist das jetzt der Deckname für Guest  (Kenn den Ausdruck nicht, falls das einer ist)

Naja umso besser, jmd versteckt sich wieder. Aber ich stimme allen voll zu, die sagen
dass diese Diskussion Off-topic ist.

Mein ursprünglicher Post an Developer war aber meines Erachtens nach On-Topic,
auch wenn es nicht um die Frage ging.

Denn bei Developers Beiträgen ist das Topic nicht der Name des Threads, sondern jedesmal
das selbe: Wie versucht man, ihm beizubringen, dass er hier im Allgemeinen etwas falsch macht?

(Ich verkriech mich jetz erstmal und bitte auch den "Bugmenot" mit eine PN zu schreiben
wenn er unbedingt weiter diskutieren will. (Was ich nicht möchte eigentlich))


----------



## Wildcard (29. Mrz 2009)

Ich rate von privaten Konversationen mit öffentlichen Accounts ab.
Bugmenot.com - login with these free web passwords to bypass compulsory registration


----------



## Spacerat (30. Mrz 2009)

@Developer_X: Also bei mir funktioniert dein Code. Wenn auch mit Dummy-Exemplaren der nicht veröffentlichten Klassen. Wie du unschwer erkennen kannst ist der Fehler nun auch ein komplett anderer. Kleiner Tipp: Könnte was mit dem ChatServer zu tun haben oder besser gesagt damit, wie er gestartet wird und wann, wo und wie dessen Streams (in/out) instanziert werden. Keine Abfragen ob er läuft, ob er überhaupt irgendwelche Streams liefert (nö... tut er bei dir nicht: Zeile 200; in == null!). Jetzt erwartest du sicher, das ich des Rätsels Lösung hier poste. Das aber tue ich nicht (<offtopic> könnt' ja sagen: "Meine Religion verbietet das" :lol: </offtopic>). Wenn du schon nicht lesen willst, dann versuchs doch mit einer eindringlichen Code-Analyse deiner kopierten Zeilen. Dabei könnte man noch behilflich sein, sofern du diesen in kleinen Häppchen postest (->KSKB). Aber auch die exessive Nutzung von Eclipse und dessen Debug-Funktion helfen da unheimlich. Das entspricht dann wohl auch Arks Vorstellungen, dir nicht auf Basis von gepostetem Code zu helfen.


			
				diggaa1984 hat gesagt.:
			
		

> du stehst auf schmerzen oder?


Diese Lektion tut ihm jetzt glaub' ich mehr weh als mir die Sache mit der Forcierung dieser Situation, für welche 





			
				FatFire hat gesagt.:
			
		

> ein Zweizeiler


definitiv nicht gelangt hätte.


			
				Spacerat hat gesagt.:
			
		

> Ich hab' da was angefangen, ich werd's beenden...


"Lektion 1" endet hier.
Lernziel:
-*Selbstständiges Lernen*: sollte kein Problem sein, wenn man ernsthaftes Interesse an Java hat. "Ich will lernen, mach mir das mal" ist äquivalent zu "Ich liebe <Namen einsetzen>, ...(Rest ist nicht Jugendfrei)".
-*"Copy/Paste" allein, hilft nicht wirklich, eigentlich gar nicht*: Um kopierten Code zu werwenden, muss man ihn auch begreifen können, damit man im Fehlerfall diesen auch nachvollziehen kann. Da kann man sich besser gleich selber überlegen, wie man ein Problem löst. Wenn man allerdings nicht weis, was das Problem ist, fehlen einem die Grundlagen, und man kommt ums "ReadTheF......Manual" nicht mehr drum rum.
-*Finally*:


> Das Leben ist kein Ponyhof


@All: Wem derartige Lektionen nicht gefallen, dem kann ich versichern, das sie mir einst auch nicht gefielen!
@Developer_X: Wie es weiter geht entscheidest du. Was wir (ich nehme an ich sprech für alle) wollen, ist:
-Beschäftige dich mit Grundlagen
-Schütt' uns nicht mit deinem Code zu, wir benötigen ihn nicht. Was wir brauchen sind "Kleine selbstständig kompilierbare Beispiele" (BTW: ich würd' "eigenständig kompilierbare" sagen). Als Übung könntest du dir ja mal diene Implementation von "ChatServer" vornehmen. Lies dir dazu mal ein Kapitel über Dienste (in diesem Fall "Java-Dienste") in deiner lieblings Java-Lektüre durch, bevor du hier die gesammte Klasse postest und (rein intuitiv aus gutem Grund, sag ich mal) Gelächter erntest.
-apropos Gelächter: Wär' doch gelacht, wenn wir (oder nur ich?) dich nicht dort hinbekommt, wo du hin willst. Dazu ist es aber dringend notwendig, das du nach unseren (wie meine aussehen hast du ja in diesem Post erfahren) Regeln lernst. Bezeichnen wir Java-Lektüre doch einfach mal als "Strassenschilder".


----------



## hdi (30. Mrz 2009)

> "Ich will lernen, mach mir das mal" ist äquivalent zu "Ich liebe <Namen einsetzen>, ...(Rest ist nicht Jugendfrei)".



Andersrum fände ich es passender. "Ich ***, also liebe ich" ist äquivalent zu
"mach mir das mal, weil ich will lernen".

Aber wer weiss vllt bist du ja Hardcore-Katholik


----------



## diggaa1984 (30. Mrz 2009)

> Zitat von FatFire
> du stehst auf schmerzen oder?



Diebstahl geistigen Eigentums, das war mein Zitat


----------



## Spacerat (30. Mrz 2009)

hdi hat gesagt.:


> Andersrum fände ich es passender. "Ich ***, also liebe ich" ist äquivalent zu
> "mach mir das mal, weil ich will lernen".


???:L nix verstenn und dir gehts wohl nicht anders. vllt. meinen wir ja auch das selbe.


			
				hdi hat gesagt.:
			
		

> Aber wer weiss vllt bist du ja Hardcore-Katholik


HardCore... möglicherweise. Ansonsten sehr weit gefehlt...


----------



## Spacerat (30. Mrz 2009)

diggaa1984 hat gesagt.:


> Diebstahl geistigen Eigentums, das war mein Zitat


Sorry... Verwechslung... wird sofort geändert...


----------



## hdi (30. Mrz 2009)

> vllt. meinen wir ja auch das selbe.


Ja tun wir, ich fand nur du hast Ursache und Wirkung verdreht.
Wenn ich sage ich liebe <Namen hier>, deshalb *censored* ich <Namen hier>, 
dann finde ich das vollkommen okay


----------



## diggaa1984 (30. Mrz 2009)

das "ich" im 2. teil musst du streichen dann passts, respektive durch ein Personalpronomen deiner Wahl ersetzen was nicht dich anspricht  .. weil sonst gibts keine analogie zum bekannten zitat


----------



## hdi (30. Mrz 2009)

> das "ich" im 2. teil musst du streichen dann passts, respektive durch ein Personalpronomen deiner Wahl ersetzen was nicht dich anspricht  .. weil sonst gibts keine analogie zum bekannten zitat



ööhhh... na gut :bahnhof:


----------



## Spacerat (30. Mrz 2009)

So wie es von mir angedacht war müsste nur ein name eingesetzt und zwei Wörter (davon ist eines ein Artikel) geändert werden... Egal... BTT bevors jmnd. merkt...


----------



## Leroy42 (30. Mrz 2009)

@Developer_X


Developer_X hat gesagt.:


> ok hdi
> und wie bitte schön kann ich ein applet als applikation starten,?
> mit Spacerats code gehts leider ent



Glaub' es doch endlich mal: *Gar nicht!*


@Bugmenot


Bugmenot hat gesagt.:


> Eh, hdi, was soll das eigentlich dauernd, wirst du dafür bezahlt?
> Das "Java ist auch eine Insel" Buch ist zum Java lernen richtig schlecht. Hast du überhaupt mal ein einziges Kapitel darin gelesen oder empfiehlst du das nur vom Hörensagen weiter?
> Ich bin mir sicher, dass alle, die Java inzwischen ganz gut können und mal in dieses Buch reingeschaut haben, da nicht widersprechen werden.



Also hier widerspreche ich doch mal ganz eindeutig!


----------



## Spacerat (30. Mrz 2009)

Leroy42 hat gesagt.:


> Glaub' es doch endlich mal: *Gar nicht!*


Und hier widerspreche ich mal ganz eindeutig!


----------



## FatFire (30. Mrz 2009)

Spacerat hat gesagt.:


> Und hier widerspreche ich mal ganz eindeutig!



Kannst Du, aber zu Unrecht. Die Frage war ja wie man ein Applet als Applikation startet und das geht ohne Einbindung in HTML oder einen Appletviewer nicht. Die Hybridapplikation wäre die Antwort auf die Frage, wie man ein Programm schreibt, was sich sowohl als Applet als auch als Applikation nutzen lässt. Meine ja nur, wenn wir schon bei diesen Haarspaltereien angekommen sind...

Aber generell muss man doch auch die Frage stellen: wieviel Sinn macht das Ganze? Wieviel Sinn würde es machen Hundekot so zu würzen, dass es wie Szegediner Gulasch schmeckt? Warum sollte man nicht einfach eine Dose Fertigfutter Szegediner Art kaufen und richtiges Fleisch essen, anstatt so einen unappetitlichen Mist zu mampfen? Und obendrein das noch jemandem erklären, der den Unterschied sowieso nicht schmecken würde...:bahnhof:

Ach, und liest eigentlich kein Anfänger mehr das Javabuch? Mir hat das am Anfang am besten geholfen, die Insel auch erst später.

Gruß FatFire


----------



## Developer_X (30. Mrz 2009)

Space Rat, hast du das mit der Eingabeaufforderung gestartet, wenn ja...
kannst du noch einmal, auch wenns blöd ist ich weiß, zeig noch mal den vollen
Code von meinem programm dass du dann richtig umgemacht hast, ein letztes mal, 
bitte,
ok?


----------



## Spacerat (30. Mrz 2009)

FatFire hat gesagt.:


> Aber generell muss man doch auch die Frage stellen: wieviel Sinn macht das Ganze?


Kurz gesagt: Egal. Es macht im allgemeinen keinen Sinn sich über Anwendungsgebiete der ein oder anderen Software/Hardware zu Unterhalten. Es wird entwickelt wie es der Kunde haben will. Der Kunde will Quark... Der Kunde bekommt Quark... Warum soll ich mir Gedanken darüber machen, was er damit will. Ok, wenn er Tabellenkalkulation mit Fallout Tactics machen will, bedarf es ein wenig Aufklärung.





FatFire hat gesagt.:


> Ach, und liest eigentlich kein Anfänger mehr das Javabuch? Mir hat das am Anfang am besten geholfen, die Insel auch erst später.


Doch schon... alle bis auf zwei?! ...würd' ich sagen.


			
				Developer_X hat gesagt.:
			
		

> Space Rat, hast du das mit der Eingabeaufforderung gestartet, wenn ja...
> kannst du noch einmal, auch wenns blöd ist ich weiß, zeig noch mal den vollen
> Code von meinem programm dass du dann richtig umgemacht hast, ein letztes mal,
> bitte,
> ok?


Alles andere als OK... und Durchgefallen:
1a: Selbständigkeit: 0pkt. // Es hat nicht der geringste Versuch stattgefunden dein Problem selbst zu lösen
1b: Copy/Paste:      0pkt. // Der Versuch ist strafbar
1c: Lesen:             0pkt. // Aus der Frage schliesse ich, das du nicht mal meine letzten grossen Beitrag gelesen hast.
1d: Das Leben usw... keine Wertung // kann halt nicht beurteilen, ob du das gelernt hast. Wird sich zeigen, wie oft im Leben du noch gegen eine Wand rennst.
Ob Eingabeaufforderung, Desktop, Eclipse oder Browser, es läuft. Den Code nochmal zu posten, würde
1. wie gesagt gegen meine "Religion" :lol: verstossen und
2. dir nicht weiterhelfen, weil bei dir die bei mir fehlenden Klassen, welche ich durch Dummies ersetzt habe (hätts'te meinen Thread eindringlich gelesen, wüsstest du's), immer noch fehlerhaft sind.


----------



## FatFire (31. Mrz 2009)

Spacerat hat gesagt.:
			
		

> Kurz gesagt: Egal. Es macht im allgemeinen keinen Sinn sich über Anwendungsgebiete der ein oder anderen Software/Hardware zu Unterhalten. Es wird entwickelt wie es der Kunde haben will. Der Kunde will Quark... Der Kunde bekommt Quark... Warum soll ich mir Gedanken darüber machen, was er damit will.


Im normalen Gewerbealltag würde ich Dir natürlich in keinster Weise entsprechen. Manchmal hab ich das Gefühl, dass ein Großteil meiner Arbeit darin besteht, den Kunden dabei zu helfen, sich selbst ins Knie zu schiessen. Eigentlich egal, hauptsache es ist das was sie wollen, ich mache mich dabei nicht strafbar und die Bezahlung stimmt.

Aber bei einem 13-jährigen Java-Noob seh ich da schon irgendwie noch einen gewissen...nennen wir es mal Lehrauftrag im Hintergrund. Und da gehört dann meines Erachtens doch auch eine umfassende Aufklärung über seine Absichten und die daraus wachsenden Konsequenzen rein.



			
				Developer_X hat gesagt.:
			
		

> auch wenns blöd ist ich weiß


Wenn Du es weißt...warum handelst Du dann wider besseren Wissens? Mal abgesehen davon, dass ich allen Punkten, die Spacerat eben genannt hat auch noch einmal ein Ausrufezeichen hinterherschmeissen würde:
Lerne bitte die Grundlagen, denn sonst wirst Du niemals ein vernünftiges Programm schreiben. Es wird sonst immer ein Flickenteppich von unterschiedlichen Programmierern sein, von ein bißchen selbsterbrochenem Leim gehalten. Wenn Du hingegen die Grundlagen wirklich lernst und verinnerlichst wirst Du
1. Gute Software, in einem Stil geschrieben, auf Grundlage eines Konzeptes, schreiben
2. Das gute Gefühl haben: "Das ist alles meins, vom ersten Import bis zum letzten } ist das alles meins"
3. und jederzeit, bei jedem Klick, bei jedem Bug wissen, wo der Fehler liegen muss (naja, wenn Du mit Logging und Debugging dann mal konsequent arbeitest)

Gruß FatFire


----------

