# in Applet "umwandeln" - HILFE!



## Sven83 (14. Mrz 2005)

Hallo,
ich muß die folgende Klasse in ein Java Applet zum laufen bringen und bin schon der Verzweiflung nahe, da ich mit dem throw und den Exceptions in einem Applet noch nicht klar komme. Hat hier jemand eine Idee, ich probiere es schon mehrere Tage ohne Erfolg......

schon mal Danke!
sven


```
import java.io.*;
import java.util.StringTokenizer;

class FileReaderDemo {
    public static void main (String args []) throws Exception {
        FileReader fr = new FileReader("TEST.TXT");
        BufferedReader br = new BufferedReader(fr);
        String s;   
        while((s = br.readLine()) != null) {
        StringTokenizer st = new StringTokenizer(s, ",");
    	while(st.hasMoreTokens()) {
        String val = st.nextToken();
        System.out.println(val);  
         }}
    fr.close();
    }
}
```


----------



## Campino (14. Mrz 2005)

Du brauchst in jedem Fall 


```
extends Applet
```

und die Methode 


```
public void init(){}
```

ob diese exceptions werfen kann, weiß ich nicht, aber ich würde eine zweite Funktion anstelle der main() machen.


----------



## Sven83 (14. Mrz 2005)

also so weit bin ich schon:


```
import java.awt.*;
import java.applet.*;
import java.io.*;
import java.util.StringTokenizer;

public class Demo extends Applet {

    public void init() { }   
    public void start() {}
    public void paint(Graphics g) {
       FileReader fr = new FileReader("TEST.TXT");
        BufferedReader br = new BufferedReader(fr);
        String s;   
                
        while((s = br.readLine()) != null) {
        StringTokenizer st = new StringTokenizer(s, ",");
        while(st.hasMoreTokens()) {
        String val = st.nextToken();
        g.drawString(val, 10, 30);      
        }
    }
  }
}
```

jedoch kommt dann folgende Fehlermeldung:

Demo.java [11:1] unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
       FileReader fr = new FileReader("TEST.TXT");
                       ^
Demo.java [15:1] unreported exception java.io.IOException; must be caught or declared to be thrown
        while((s = br.readLine()) != null) {
                              ^
2 errors
Errors compiling.

und ich hab bisher noch keine Ahnung wie ich das Problem mit der Exception im Applet lösen kann.......


----------



## Sky (14. Mrz 2005)

Sven83 hat gesagt.:
			
		

> Demo.java [11:1] unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
> FileReader fr = new FileReader("TEST.TXT");
> ^


Hier muss ein try-catch-Block um die fragliche Zeile, das sieht in etwa so aus:

```
try {
  // dein Code...
} catch ( FileNotFoundException ex ) {
  ex.printStackTrace();
}
```





			
				Sven83 hat gesagt.:
			
		

> Demo.java [15:1] unreported exception java.io.IOException; must be caught or declared to be thrown
> while((s = br.readLine()) != null) {
> ^
> 2 errors
> Errors compiling.


Auch hier, wie oben beschrieben, allerdings muss hier eine IOException abgefangen werden.





			
				Sven83 hat gesagt.:
			
		

> und ich hab bisher noch keine Ahnung wie ich das Problem mit der Exception im Applet lösen kann.......


Das Thema ist nicht Applet-Spezifisch. Die besagten Exceptions fliegen in jeglichem identischem (bzw. vergleichbarem) Java-Quellcode.


----------



## Sven83 (14. Mrz 2005)

Danke erstmal für die ersten Hinweise  !
Problem ist aber immer noch nicht gelöst, nachdem ich versucht habe die Exceptions zu setzen:


```
import java.awt.*;
import java.applet.*;
import java.io.*;
import java.util.StringTokenizer;

public class Demo extends Applet {

public void init() { } 
public void start() {}
public void paint(Graphics g, String s) {
try {
FileReader fr = new FileReader("TEST.TXT");
BufferedReader br = new BufferedReader(fr); 
try {
while((s = br.readLine()) != null);
}
catch(java.io.IOException e) {
g.drawString("nicht gefunden", 10, 30);}
{
StringTokenizer st = new StringTokenizer(s, ",");
while(st.hasMoreTokens()) {
String val = st.nextToken();
g.drawString(val, 10, 30);}
}
try {
fr.close();
}
catch(java.io.IOException e) {
g.drawString("nicht gefunden", 10, 30);} 
}
catch(java.io.FileNotFoundException e) {
g.drawString("nicht gefunden", 10, 30);} 
} 
}
```
kommt nun eine Fehlermeldung:

java.lang.NoSuchMethodError: main
Exception in thread "main" 

die wohl nichts gutes bedeutet oder?


----------



## Sky (14. Mrz 2005)

Wie versuchst Du es denn zu starten? Wenn Du es per 
	
	
	
	





```
java Demo
```
 starten willst, so wird dies nicht gehen, da du nicht die main-Methode implementierst.

So, wie Du es geproggt hast, musst Du es in eine HTML-Seite einbinden und diese im Browser deiner Wahl starten.


----------



## Sven83 (15. Mrz 2005)

also die Fehlermeldung zeigt er beim compilieren an. Und wenn ich die html-seite Starte in der das applet eingbunden ist, wird im applet nichts ausgeführt.


----------



## youssef (15. Mrz 2005)

Hallo,
dein code lässt sich bei mir fehlerfrei kompilieren.
ausserdem habe dein aufruf von paint methode so geändert


```
public void paint(Graphics g) {
        try {
            String s = null;
            ......
            .....
```
beim ausführen wird eine exception ausgelöst was in ordnung ist weil ich die datei nicht habe
java.io.FileNotFoundException: TEST.TXT (Das System kann die angegebene Datei nicht finden)

in dein catch blöcke immer den stack ausgeben

```
e.printStackTrace();
```

wenn du dein Applet von appletviewer oder eclipse ausführt dann sieht su auch was passiert wird

Gruss
Youssef


----------



## Sven83 (16. Mrz 2005)

Danke erstmal an alle, das Applet funktioniert. Nun habe ich nur noch ein kleines Problem zu lösen. Und zwar kann ich die Ausführung (den Text) des Applets nur bei Eclipse sehen, wenn ich es jedoch in eine HTML Datei einfüge sehe ich im Browser nur den grauen Hintergrund des Applets.

Ich habe folgenden Code in die HTML-Datei Implementiert mit dem ich bisher alle meine Applets ausführen konnte:

```
<applet code="Demo" width=300 height=1000>
</applet>
```


----------



## youssef (16. Mrz 2005)

hallo,
natürlich kannst du das. probier mal das hier in dein html code


```
<applet code="Demo.class" width=300 height=1000> 
</applet>
```

Gruss
Youssef


----------



## Sven83 (16. Mrz 2005)

kann im Browser trotzdem nichts sehen....:-(


----------



## Campino (16. Mrz 2005)

1. ich denke mal dass das ein Security prob is. Du kannst aus einem Applet im Browser NUR dateien von dem Server von dem aus das Applet geladen wurde öffnen. Deshalb wird vermutlich keine datei eingelesen.
2. warum steht dein Code eigentlich in der main()-Methode? Was hälst du von der init().


----------



## Sky (16. Mrz 2005)

1.) Höre auf die Worte von 'youssef':

```
public void paint(Graphics g) {
  try {
    String s = null;
```

2.) Ändere mal deinen BufferedReader:

```
BufferedReader br = new BufferedReader(new InputStreamReader(new URL(getCodeBase()+"/TEST.TXT").openStream()));
```

Deinen FileReader (fr) brauchst Du dann nicht mehr.

3.) Die folgende Anweisung ist böse: 
	
	
	
	





```
while((s = br.readLine()) != null);
```
 Nimm mal wieder die while-Schleife aus deinem 1. Post


----------



## Sven83 (17. Mrz 2005)

Danke Sky80, das war es. Alles funktioniert jetzt. sehr fein.....


----------



## Sky (17. Mrz 2005)

Sven83 hat gesagt.:
			
		

> Danke Sky80, das war es. Alles funktioniert jetzt. sehr fein.....


Dann mach'n Hacken dran


----------

