Applet auf lokalem Rechner mit der EingabeAufforderung Starten

Status
Nicht offen für weitere Antworten.

Developer_X

Top Contributor
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
Code:
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?
 
Zuletzt bearbeitet von einem Moderator:
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();
 
Zuletzt bearbeitet:
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
 
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
...
 
Zuletzt bearbeitet:
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.
 
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
 
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
 
Zuletzt bearbeitet:
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...
 
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...
 
Zuletzt bearbeitet von einem Moderator:
:lol: Aber wenn Du ihn hättest verwirren wollen, hätte es doch auch ein Zweizeiler getan. Möglicherweise auch ein Einzeiler, wer weiß...
 
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
 
Zuletzt bearbeitet:
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.
 
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:
Code:
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
 
Zuletzt bearbeitet von einem Moderator:
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
 
*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!
 
Zuletzt bearbeitet:
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
 
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 >:[
 
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.
 
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 😉
 

fullack @diggaa1984 was die letzten beiden Beiträge betrifft
Insel ist doch okay, bietet imho ganz guten Überblick, zumindest zu Grundlagen.
 
Zuletzt bearbeitet:
..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...
 
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:
 
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))
 
@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.:
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".
 
Zuletzt bearbeitet von einem Moderator:
"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 😉
 
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 😉
 
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 😀
 
Zuletzt bearbeitet:
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:
 
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...🙂
 
@Developer_X
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
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!
 
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
 
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?
 
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.
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.
 
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
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben