# Hilfe - Seltsame Fehlermeldung nach Signatur eines Applets!



## Phillipp (14. Dez 2005)

Hallo
ich weiß, das ist jetzt schon die xte Anfrage zum Thema "Applet wird nicht angezeigt", aber ich kämpfe seit 2 Tagen mit einem Problem und komme einfach nicht weiter:

Ich habe mit dem j2sdk mitgeliefertem keytool eine digitale Signatur in einer jar Datei erstellt, und diese entsprechend in das archive tag eingebunden. Auf den ersten Blick schien alles zu klappen, nach dem Öffnen der Html Datei erscheint der "Signatur Fragedialog", dann allerdings bekomm ich wieder das klassische rote X und das Applet wird nicht angezeigt.
Bei Mozilla und IE ist dieses Verhalten nahezu gleich. Die Konsole sagt folgendes:



java.lang.SecurityException: class "Test$1"'s signer information does not match signer information of other classes in the same package
	at java.lang.ClassLoader.checkCerts(Unknown Source)
	at java.lang.ClassLoader.preDefineClass(Unknown Source)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	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 java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at Test.init(Test.java:44)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)


Besonders die Ausgabe "java.lang.SecurityException: class "Test$1"'s signer information does not match signer information of other classes in the same package"
macht mich stutzig, da ich keine anderen klassen verwende.

ich verwende eclipse und j2re1.4.2_10 / jre1.5.0_06

Hoffentlich kann mir jemand helfen, die Sache macht mich langsam wahnsinnig


----------



## Sky (15. Dez 2005)

Wie hast Du die Signierung denn durchgeführt ?

Guck mal in der FAQ, wenn Du es so gemacht hast, dann sollte es eigentlich gehen...


----------



## Philipp (15. Dez 2005)

Danke

aber ich kann damit nich soviel anfangen. ich kenne mich auf diese kommandoebene überhaupt nicht aus, und kann aus dem artikel nicht entnehmen, was nun ein Befehl, Kommentar oder Ausgabe ist. 
auch der link hilft mir einfach nicht weiter. ich kapiere überhaupt nicht, was und wie ich diese policy geschichte handeln soll.ich krieg es einfach nicht hin...Könnte vielleicht bitte mal jemand so eine  idiotensichere anleitung posten oder hat noch jemand weitere links parat?

 ???:L


----------



## Sky (15. Dez 2005)

Im ersten Post schreibst Du, Du hast mittels keytool eine digitale Signatur erstellt usw. und Du verstehst die FAQ nicht, die genau das behandelt??? Sorry, ich kann Dir nicht ganz folgen!


----------



## Philipp (15. Dez 2005)

achso, 
hier meine genaue bisherige vorgehensweise:

1. eingabeaufforderung, wechseln in Verzeichnis C:\j2sdk1.4.2_10\bin und Schlüsselpaar erzeugen

     keytool -genkey -alias heinz

2. Zertifikat erzeugen und anzeigen

     keytool -export -alias heinz  -file selfsigned.crt
     keytool -printcert -file selfsigned.crt

3. Kopieren meiner Applet Datei "Test.class" in das Verzeichnis C:\j2sdk1.4.2_10\bin und  Erstellen der jar Datei

      jar cvf Signatur.jar Test.class

4. Signieren der class Datei

     jarsigner Signatur.jar heinz

5. Kopieren der Datei "Signatur.jar" in das ursprüngliche Verzeichnis und Aufnahme der Datei im archive Tag
    der HTML Seite

     <applet code="Test.class" width = 999 height = 549 archive = "..weitere jar dateien","Signatur.jar">


6. Test.htm ausführen, Zertifikat bestätigen und:

      _________________
     |X                            |
     |                              |
     |                              |
     |_________________|


     Statuszeile: Ausnahme: java.lang.SecurityException: class "Test$1"s signer information does not match signer       information of other classes i


----------



## Sky (15. Dez 2005)

>> "Kopieren meiner Applet Datei "Test.class" in das Verzeichnis C:\j2sdk1.4.2_10\bin"
Muss nicht sein, Path setzen würde reichen... aber

"die Test$1.class" muss auch in das Verzeichnis von Test.class und die jar-Date erzeugen mit "jar cvf Signatur.jar" *.class


----------



## Philipp (15. Dez 2005)

danke mal für die bemühungen, 
hab jetzt nochmal gemäß dem vorschlag rumprobiert, aber es will einfach nicht klappen.
aller erforderlichen dateien befinden sich im entsprechenden ordner. nach wie vor das gleiche problem.
kann es vielelicth damit zusammenhängen, dass ich diese policy da nicht definiert hab, oder vielleicth weil ich andere, externe jars verwende?


----------



## Phillip (15. Dez 2005)

ok, 
das war der entscheidende Tip: alle klassen (auch innere und anonyme) packen.
jetzt bin ich immerhin n schritt weiter: 
teile des applets werden dargestellt. da aber auch ein bild von der festplatte zu laden ist, bekomme ich (vermutl. deswegen) folgende Meldung:

java.security.AccessControlException: access denied (java.io.FilePermission C:\Dokumente und Einstellungen\Phil\Desktop\view.jpg read)


             seufz...


----------



## L-ectron-X (15. Dez 2005)

Mit welchen Methoden lädst du die Bilder?
Zeig doch mal die entsprechende Codestelle.


----------



## Philipp (15. Dez 2005)

hier ist der code, der mir in der appletviewer vorschau immer das bild anzeigt. es liegt im gleichen ordner wie die class datei:

```
public void setSVG()
   {
      
     AccessController.doPrivileged(new PrivilegedAction() 
     {
       public Object run()
       {
           try 
           {
               svgCanvas = new JSVGCanvas(); 
               String svgUri = new File("figures.svg").toURI().toString();
               svgCanvas.setURI(svgUri);                  
           }
           catch (Exception ex) 
           {

               label.setText(ex);
           }
           return null;
       }
     });
   }
```

ich hab jetzt auch nochmal gemäß der anleitung von krüger probiert, eine java.policy datei zu erstellen.
diese liegt nun ebenfalls im gleichen ordner mit folgendem inhalt:


keystore "file:/c:/dokumente und einstellungen/phil/.keystore";
grant SignedBy "Frauke" {
  permission java.io.FilePermission "c:\\Eclipse Projekte\\Test\\*", "read,write";
};

..und sollte damit "figures.svg" lesen können.
aber es bleibt immer noch alles beim alten:

Firefox zB bringt folgende Meldung:

access denied (java.io.FilePermission C:\Programme\Mozilla Firefox\figures.svg read)






```

```


```

```


```

```


----------



## Bleiglanz (15. Dez 2005)

bist du sicher dass das bild beim Client auf der Festplatte liegen soll?

im Echtbetrieb wirds wenn nötig vom Server (!) nachgeladen...


----------



## Philipp (15. Dez 2005)

ach so natürlich soll das bild ganz einfach auf dem server liegen und von da vom applet gelesen werden, mehr nicht.

ich hab mich mit signaturen noch nie vorher beschäftigt und für mich ist es ein riesenkrampf, das alles machen zu müssen, zumal ich nicht wirklich weiß was ich da tue. halte mich einfach ein paar allgemeine anleitungen, aber ich versteh nicht warum das einfach nicht klappen will.


----------



## Bleiglanz (16. Dez 2005)

Anonymous hat gesagt.:
			
		

> ach so natürlich soll das bild ganz einfach auf dem server liegen und von da vom applet gelesen werden, mehr nicht.


in diesem Fall brauchst du keine Signaturen


----------

