# java.lang.ClassNotFoundException



## Search (20. Okt 2004)

Hallo zusammen

komme einfach nicht weiter. schaffe es nicht mein applet in einen browser einzubinden. habe das ganze mit mozilla versucht. wenn ich folgendes mache:


```
<APPLET code="Client" width="200" height="50" MAYSCRIPT>
					<PARAM NAME="MAYSCRIPT" VALUE="TRUE">
					</APPLET>
```

bekomme ich folgende exception:

java.lang.NoClassDefFoundError: Client (wrong name: com/gekko/messenger/applet/Client)

und wenn ichs so mache:


```
<APPLET code="com.gekko.messenger.applet.Client" width="200" height="50" MAYSCRIPT>
					<PARAM NAME="MAYSCRIPT" VALUE="TRUE">
					</APPLET>
```

bekomme ich diese exception:

java.lang.ClassNotFoundException: com.gekko.messenger.applet.Client


habe das Client.class file in den ordner kopiert wo das index.html (welches das applet aufruft) sich befindet. ohne package läuft das ganze. was mache ich falsch. aja, und was muss ich machen damit ich das class file nicht immer kopieren muss. bekomm das einfach nicht hin  hoffe mich kann jemand helfen. 

danke und gruss


----------



## foobar (20. Okt 2004)

Wenn deine Klasse in einem Package liegt, muß die Packet/Verzeichnisstruktur erhalten bleiben, ansonsten wird die KLasse nicht gefunden. Am besten packst du deine Klasse in ein Jar. Benutz mal die Suche hier im Forum.


----------



## search (22. Okt 2004)

hmm... danke erstmals für deine antwort... hab mich mal im forum umgesehn aber nicht wirlich was gefunden... wie ich ein jar-file erstelle habe ich herausgefunden. muss man ja über die konsole machen, oder? welche files muss ich dann da hinzufügen? nur die class files? und wo muss ich es nachher platzieren? im gleichen verzeichnis wie das jsp file welches das applet aufruft? wenn ich eine klasse abgeändert habe muss ich wohl das ganze jar file wieder erstellen, oder? und noch was, hab gemerkt das ich das applet signieren muss da ich eine socketconnection aufmachen möchte. kennt da jemand eine gute seite? hab diverse seiten gefunden aber da ist's nicht wirklich genau beschrieben und ich habe wirklich keinen plan wie ich das zu realisieren habe. 

hoffe jemand kann mir bei all den fragen weiterhelfen. danke schon mal.

gruss


----------



## L-ectron-X (23. Okt 2004)

search hat gesagt.:
			
		

> ... wie ich ein jar-file erstelle habe ich herausgefunden. muss man ja über die konsole machen, oder?


Nein nicht unbedingt. Es gibt auch Tools, die einem die Arbeit abnehmen.
Ein recht bekanntes und leistungsfähiges Tool ist Jarkive.



			
				search hat gesagt.:
			
		

> welche files muss ich dann da hinzufügen? nur die class files?


Mindestens die .class-Dateien. Wenn auch noch Bilder und Sounds gepackt werden sollen, ist u.U. die Modifikation des Codes nötig.



			
				search hat gesagt.:
			
		

> und wo muss ich es nachher platzieren? im gleichen verzeichnis wie das jsp file welches das applet aufruft?


Du kannst das Applet auch in einem beliebigen Verzeichnis unterbringen. Dann muss das Applet-Tag aber ein zusätzliches Attribut führen:
Z.B.

```
<applet code="MeineKlasse.class" codebase="../verzeichnis" archive="MeinJar.jar" width=200 height= 100>
</applet>
```



			
				search hat gesagt.:
			
		

> wenn ich eine klasse abgeändert habe muss ich wohl das ganze jar file wieder erstellen, oder?


So ist es.



			
				search hat gesagt.:
			
		

> und noch was, hab gemerkt das ich das applet signieren muss da ich eine socketconnection aufmachen möchte. kennt da jemand eine gute seite? hab diverse seiten gefunden aber da ist's nicht wirklich genau beschrieben und ich habe wirklich keinen plan wie ich das zu realisieren habe.


Auch hier hilft Jarkive.


----------



## Search (25. Okt 2004)

hallo L-ectron-X

vielen dank für deine ausführliche  antwort. hab's nun mit dem signieren hinbekommen. das heisst bevor das applet geladen wird kommt ne abfrage. das heisst es wird eigentlich nicht geladen  :cry:  habe folgenden code:


```
<APPLET archive="applet.jar" code="WEB-INF\classes\com\gekko\messenger\applet\Client.class" width="200" height="50" MAYSCRIPT>
					<PARAM NAME="MAYSCRIPT" VALUE="TRUE">
					<PARAM name="clientUsername" value="<%=(String)request.getSession().getAttribute("UNAME")%>">
					</APPLET>
```


bekomme dann immer eine java.lang.ClassNotFoundException: Client.class exception. das applet ist in einem package: package com.gekko.messenger.applet; hab bisher nicht herausgefunden wie ich das machen muss. das applet jar liegt im selben verzeichnis wie das jsp file welches das applet aufruft. 

wenn ichs so mach:


```
<APPLET archive="applet.jar" code="Client.class" width="200" height="50" MAYSCRIPT>
					<PARAM NAME="MAYSCRIPT" VALUE="TRUE">
					<PARAM name="clientUsername" value="<%=(String)request.getSession().getAttribute("UNAME")%>">
					</APPLET>
```

wird komischerweise das zertifikat nicht mehr angezeigt  :shock:  wieso? 

hoffe es kann mir da jemand weiterhelfen...

noch ne frage zur zertifizierung. das zertifikat welches ich erstellt habe wurde ja von keiner firma "abgesegnet" oder so. hab ich dann trotzdem uneingeschränkten zugriff wenn es angenommen wird? also habe ich die erlaubnis für z.B. eine socketConnection? 
und noch was. habe in einigen tuts gesehen dass das signieren in Mozilla und IE verschieden verläuft (Mozilla mit jar, IE mit cab-Files). mein zertifikat wird jedoch in beiden browsern angezeigt? wieso das? kann ie ab ner neuen version jar-files handlen?

danke und gruss


----------



## Search (25. Okt 2004)

habs nun so:


```
<APPLET code="com.gekko.messenger.applet.Client" archive="applet.jar" width="200" height="50" MAYSCRIPT>
					<PARAM NAME="MAYSCRIPT" VALUE="TRUE">
					<PARAM name="clientUsername" value="<%=(String)request.getSession().getAttribute("UNAME")%>">
					</APPLET>
```


die applet klassen befinden sich in folgendem package: package com.gekko.messenger.applet;
das applet befindet sich im jsp verzeichnis
das jar file entspricht genau der package struktur. 

was kann man da noch falsch machen. hab echt keinen plan. bekomme immer noch folgende exception:

Laden: Klasse com.gekko.messenger.applet.Client nicht gefunden

java.lang.ClassNotFoundException: com.gekko.messenger.applet.Client

	at sun.applet.AppletClassLoader.findClass(Unknown Source)

	at java.lang.ClassLoader.loadClass(Unknown Source)

	at sun.applet.AppletClassLoader.loadClass(Unknown Source)

	at java.lang.ClassLoader.loadClass(Unknown Source)

	at sun.applet.AppletClassLoader.loadCode(Unknown Source)

	at sun.applet.AppletPanel.createApplet(Unknown Source)

	at sun.plugin.AppletViewer.createApplet(Unknown Source)

	at sun.applet.AppletPanel.runLoader(Unknown Source)

	at sun.applet.AppletPanel.run(Unknown Source)

	at java.lang.Thread.run(Unknown Source)

Caused by: java.io.IOException: open HTTP connection failed.

	at sun.applet.AppletClassLoader.getBytes(Unknown Source)

	at sun.applet.AppletClassLoader.access$100(Unknown Source)

	at sun.applet.AppletClassLoader$1.run(Unknown Source)

	at java.security.AccessController.doPrivileged(Native Method)

	... 10 more


danke und gruss


----------



## Search (25. Okt 2004)

hallo

das applet läuft nun... habe keine ahnung wieso... habe nichts mehr geändert... hab den selben code mal in mein index.html gepastet... dort ist das ganze gelaufen... hab's dann wider in mein jsp kopiert und siehe da es konnte geladen werden... hab echt keine erklärung dafür aber das ist wohl java wie es leibt und lebt   
wäre trotzdem noch froh wenn mir jemand eine antwort zu den oben genannten fragen geben könnte.

danke schonmal, gruss


----------

