# ClassNotFound - Trotz Signierung



## dapr_ (27. Mai 2011)

Hallo zusammen,

ich habe ein Problem mit einem Applet. 

Zunächst einmal habe ich mir für das Appelt ein Zertifikat gekauft (Thawte), importiert, die .jar signiert und verifiziert (schien auch soweit alles geklappt zu haben). Sobald ich die Seite aufrufe wird das Zertifikat auch installiert. Wenn ich mir die Zertifikatdetails angugge ist auch alles in Ordnung.

soweitsogut.

Stelle ich im Java Control Panel unter Erweitert -> Sicherheitsprüfung von gemischtem Code 
die Einstellung auf "Überprüfung deaktivieren" funktioniert alles einwandfrei.

Stelle ich nun aber die Option auf Aktiviert, so kommt folgende Fehlermeldung in der Konsole:


```
validateCertificates:
VALIDATE: j3dcore-ogl-chk.dll
extractNativeLibs:
EXTRACT: j3dcore-ogl-chk.dll(j3dcore-ogl-chk)
java.lang.ClassNotFoundException: Schrank_normal
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at org.jdesktop.applet.util.JNLPAppletLauncher.startSubApplet(JNLPAppletLauncher.java:1914)
	at org.jdesktop.applet.util.JNLPAppletLauncher.access$200(JNLPAppletLauncher.java:658)
	at org.jdesktop.applet.util.JNLPAppletLauncher$5.run(JNLPAppletLauncher.java:1269)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
27.05.2011 19:39:06 org.jdesktop.applet.util.JNLPAppletLauncher displayError
SCHWERWIEGEND: Class not found: Schrank_normal
```

Hier auch mal mein Applet Tag:


```
<applet height="900" width="1200" name="modelViewer"
               code="org.jdesktop.applet.util.JNLPAppletLauncher"
               archive="http://meinedomain.de/tool/Planer/code/Konfigurator.jar,
               http://download.java.net/media/applet-launcher/applet-launcher.jar,
               http://download.java.net/media/java3d/webstart/release/j3d/latest/j3dcore.jar,
               http://download.java.net/media/java3d/webstart/release/j3d/latest/j3dutils.jar,
               http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jar,
               http://download.java.net/media/gluegen/webstart/gluegen-rt.jar,
               http://download.java.net/media/java3d/webstart/release/vecmath/latest/vecmath.jar">
   <param name="codebase_lookup" value="false">
   <param name="subapplet.classname" value="Schrank_normal">
   <param name="subapplet.displayname" value="Schrank normal">
   <param name="jnlpNumExtensions" value="1">
   <param name="jnlpExtension1" value="http://download.java.net/media/java3d/webstart/release/java3d-latest.jnlp">
   <param name="progressbar" value="true">
   <param name="noddraw.check" value="true">
...
</applet>
```


Zur Ordnerstruktur:
meinedomain.de/tool//Planer/code/Konfigurator.jar
meinedomain.de/tool//Planer/freistehend/meineSeite.php


Ich habe schon diverse Seiten von Sun und Oracle gelesen und Forum etcpp aber ich stehe iwie auf dem Schlauch. Da idR ja die Sicherheitsfunktion aktiviert ist, sollte / muss es auch mit aktivierter Option iwie klappen. 

Kann es sein, dass ich Policy-technisch noch was machen muss oder sitzt der Fehler woanders?
Ich wäre für Hilfe sehr dankbar.

Danke im voraus und gruß


----------



## Wildcard (27. Mai 2011)

Heißt deine Klasse wirklich Schrank_normal? :autsch:
Davon abgesehen dass das klar gegen die Coding Conventions verstößt musst du unbedingt packages verwenden.


----------



## dapr_ (28. Mai 2011)

Oh ja stimmt , wenn länger niemand die eigene arbeit reviewed verpeilt man manches.

Ja habe das soweit alles korrigiert packages, coding conventions. danke soweit!

Kann es aber erst leider Montag früh testen.

Ein Frage habe ich aber noch: 
ein Bekannt hat mich darauf aufmerksam gemacht das ich externe jars lade und das diese den Fehler verursachen könnten. sprich er meinte ich soll diese lokal speichern und mit meinem key signieren. Habe mir die Jars aber angeguggt sind aber alle von sun zertifiziert.

Ist das eine Möglichkeit? oder lieber nicht tun?

gruß


----------



## L-ectron-X (28. Mai 2011)

Ich glaube eher an einen Fehler in deinem Code/Programm, bevor ich darüber nachdenke, ob in Suns Klassen Fehler drin sind. Die Wahrscheinlichkeit ist jedenfalls viel geringer!


----------



## dapr_ (2. Jun 2011)

Hallo nochmal,

trotz der Änderung besteht weiterhin das Problem, dass der Fehler geworfen wird, wenn ich die Sicherheitseinstellungen von gemischtem Code aktiviere.

Nocheinmal ein Auszug vom Fehler (Internetexplorer, Firefoxe,Chrome...:

```
extractNativeLibs:
EXTRACT: j3dcore-ogl-chk.dll(j3dcore-ogl-chk)
java.lang.ClassNotFoundException: konfigurator.SchrankNormal
	at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
	at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
```

Allerding verwende ich den Internet Explorer 64bit, wird die Klasse geladen aber es kommt folgende Fehlermeldung:


```
validateCertificates:
VALIDATE: j3dcore-ogl.dll
extractNativeLibs:
EXTRACT: j3dcore-ogl.dll(j3dcore-ogl)
Reading certificates from 9437 [url]http://meinedomain.de/tool/Planer/code/Konfigurator.jar[/url] | C:\Users\Daniel\AppData\LocalLow\Sun\Java\Deployment\cache\6.0\29\7a69361d-17a72285.idx
Java 3D: loadLibrary(j3dcore-ogl)
java.lang.ClassNotFoundException: org.jdesktop.applet.util.JNLPAppletLauncher
Attempting to use System.loadLibrary instead
```

meine Verzeichnisstruktur vom .jar:

Konfigurator.jar
konfigurator/SchrankNormal.class
META-INF/...

Und das Applet Tag:


```
<applet height="900" width="1200" name="modelViewer"
               code="org.jdesktop.applet.util.JNLPAppletLauncher"
               archive="http://meinedomain.de/tool/Planer/code/Konfigurator.jar,
               http://download.java.net/media/applet-launcher/applet-launcher.jar,
               http://download.java.net/media/java3d/webstart/release/j3d/latest/j3dcore.jar,
               http://download.java.net/media/java3d/webstart/release/j3d/latest/j3dutils.jar,
               http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jar,
               http://download.java.net/media/gluegen/webstart/gluegen-rt.jar,
               http://download.java.net/media/java3d/webstart/release/vecmath/latest/vecmath.jar">
   <param name="codebase_lookup" value="false">
   <param name="subapplet.classname" value="konfigurator.SchrankNormal">
   <param name="subapplet.displayname" value="Schrank normal">
   <param name="jnlpNumExtensions" value="1">
   <param name="jnlpExtension1" value="http://download.java.net/media/java3d/webstart/release/java3d-latest.jnlp">
   <param name="progressbar" value="true">
   <param name="noddraw.check" value="true">
```

Kann jemand damit etwas anfangen?
ich habe mittlerweile echt keine Ahnung mehr woran es liegen könnte D: 

danke und gruß


----------

