# Applet signiert aber weiterhin exception!



## Heiland (31. Jul 2005)

Hallo,

ich habe ein Applet das eine FTP verbindung aufbauen soll. Dazu musste ich es erst signieren. OK, hab ich nach langem hin und her auch geschafft. Doch es will immer noch nicht: Naja: Hier mal der code, das html file und noch die exception:


```
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import java.net.*;
import java.lang.Object;
import org.apache.commons.net.ftp.FTPClient;

public class Guestbook extends Applet
{

	Panel panel1 = new Panel();
	Panel panel2 = new Panel();
	Panel panel3 = new Panel();
	TextField name = new TextField(30);
	TextField email= new TextField(30);
	TextField hp   = new TextField(30);
	TextArea message=new TextArea(10, 60);
	Button send = new Button("send");

	String nameS;
	String emailS;
	String hpS;
	String messageS;

	FTPClient f;
    //PrintStream print;
    //File path;

	public void init()
	{
		panel1.setLayout(new GridLayout(3, 2));
		panel2.setLayout(new GridLayout(1, 1));

		panel1.add(new Label("Your Name:"));
		panel1.add(name);
		panel1.add(new Label("Your eMail:"));
		panel1.add(email);
		panel1.add(new Label("Your HP:"));
		panel1.add(hp);

		panel2.add(message);
		panel3.add(send);

     	send.addActionListener(new ActionListener()
     	{
     		public void actionPerformed(ActionEvent e)
     		{
     			entry();
         	}
        });
	}

	public void start()
	{
		setLayout(new GridLayout(3, 1));
		add(panel1);
		add(panel2);
		add(panel3);
	}

	public void entry()
	{
		f = new FTPClient();
		try
		{
			URL pfad = getCodeBase();
			//pfad.openConnection();
			//String protocol = new String(pfad.getProtocol());
			//System.out.println(protocol);
			String url = pfad.toString();
			f.connect(url);
			f.deleteFile("datei.txt");
			f.disconnect();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}

	}

	public void stop()
	{

	}

	public void paint(Graphics g)
	{

	}
}
```

Das html file mit 2 Archiven. Einmal ein Paket mit Klassen und einmal noch das signierte JAR file der Klasse:


```
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
	code	= "Guestbook.class"
	archive = "commons-net-1.4.0.jar Guestbook.jar"
	width	= "500"
	height	= "300"
>
</APPLET>
</CENTER>
</BODY>
</HTML>
```

Und zuguter letzt die Exception:


```
Exception in thread "AWT-EventQueue-1" java.lang.NoClassDefFoundError: org/apache/commons/net/ftp/FTPClient
        at Guestbook.entry(Guestbook.java:75)
        at Guestbook$1.actionPerformed(Guestbook.java:60)
        at java.awt.Button.processActionEvent(Button.java:388)
        at java.awt.Button.processEvent(Button.java:356)
        at java.awt.Component.dispatchEventImpl(Component.java:3955)
        at java.awt.Component.dispatchEvent(Component.java:3803)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
```

Nunja er macht beim Konstruktor von FTPClient() stress. Aber ich habe keinerlei Ahnung warum... Wäre nett, wenn mir jemand helfen könnte. Hinweis: Ich verwende Commons-net-1.4.0! Ein Paket um FTP und andere Protokolle in Java anzusprechen!

Danke im Vorraus!!!
THX JaVa


----------



## Campino (31. Jul 2005)

Das Paket (Commons-net-1.4.0) muss im Classpath stehen, sonst findet er es nicht. 

Eine NoClassDefFoundException heißt, dass er den class-File mit der Klasse auf die die Exception sich bezieht nicht findet.


----------



## Heiland (1. Aug 2005)

Achso. Hmm, allerdings hab ich unter Linux meinen Classpath gesetzt. Allerdings schaffe ich das immer nur für die aktuelle konsole. Wie kann ich ihn denn dauerhaft setzen? (übrigens: Für die Path variable bräuchte ich das auch )

THX JaVa


----------



## stev.glasow (1. Aug 2005)

Der muss ins archive-Attribut des Applet Tags.


----------



## Guest (1. Aug 2005)

hab ich doch schon gemacht! Komisch...


----------



## stev.glasow (1. Aug 2005)

achja, hab ich übersehen.
versuch mal "commons-net-1.4.0.jar, Guestbook.jar" 
Also mit Komma.


----------



## JaVa-schnell (1. Aug 2005)

Hmmm. Wie macht man es das man an das archive attribut noch eine weitere Klasse übergibt?

THX JaVa


----------



## stev.glasow (1. Aug 2005)

Was meinst?
mehrer Archive trennt man mit Komma, siehe Beispiel.


----------



## Heiland (1. Aug 2005)

ja, genau so hab ichs gemacht... Übrigens: Ich habe auch noch eine Klasse Guestbook$1.class, ich habe die auch zur jar hinzugefügt, wird im archiv aber nicht angezeigt.  Muss ich diese Klasse auch noch einbinden?

thx, JaVa


----------



## 8ull23y3 (1. Aug 2005)

/me sacht da nix mehr zu der hat der schon genug tipps gegeben. ohne extra libs ohne was weiss ich. wennes nicht annimmst pech.


----------



## Heiland (1. Aug 2005)

nur weil ich deine Lösung mit PHP jetzt nicht übernehem, musst du nicht gleich in Panik geraten ;-) Es ist nunmal so, das es jetzt einfach nicht weitergeht... Selbst nach signieren usw usw...
Ich habe das signierte JAR File dem archive Attribut übergeben und das andere Paket auch, wo die Klassen drin sind! Ich weiß jetzt nunmal nicht mehr wies weitergehen soll. Tut mir leid!


----------



## 8ull23y3 (2. Aug 2005)

Nein, nein ich gerate ganz sicherlich nicht in Panik  find nur seltdsam das du unbedingt den schwereren Weg gehen willst


----------



## Heiland (3. Aug 2005)

naja, jetzt hab ich nach langem hin und her mal nen keycode erstellt meine jar datei signiert usw und dann soll alles umsonst gewesen sein?! bestimmt nicht! ich versuch jetzt noch die datei zu finden wo man den classpath und den path unter linux dauerhaft setzt... danach weiß ich auch nicht mehr weiter. ich werde auf dich zurückkommen bullz mit deiner php lösung!


----------



## 8ull23y3 (3. Aug 2005)

Hehe mach das


----------

