Hilfe - Seltsame Fehlermeldung nach Signatur eines Applets!

  • Themenstarter Themenstarter Phillipp
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
P

Phillipp

Gast
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 🙁
 
Wie hast Du die Signierung denn durchgeführt ?

Guck mal in der FAQ, wenn Du es so gemacht hast, dann sollte es eigentlich gehen...
 
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
 
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!
 
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
 
>> "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
 
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?
 
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...
 
hier ist der code, der mir in der appletviewer vorschau immer das bild anzeigt. es liegt im gleichen ordner wie die class datei:
Code:
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)





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

im Echtbetrieb wirds wenn nötig vom Server (!) nachgeladen...
 
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.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben