2017-06-15 6 views
0

Ich bin eine Java-Applet Herstellung von Client-Seite PDF zu unterzeichnen und begegne mir die folgenden Fehler, wenn das Applet in Internet Explorer starten:Java Applet: java.lang.NoClassDefFoundError

The error I get

Das ist mein Ordner Architektur:

Test/ 
├── Applet.html/ 
├── PDFSigningApplet.class/ 
├── jars/ 
│ └── bcpkix-jdk15on-1.49.jar 
│ └── bcprov-jdk15on-1.49.jar 
│ └── itextpdf-5.5.11.jar 
│ └── itext-pdfa-5.5.11.jar 
│ └── ... 

Hier ist mein HTML Code:

<html> 

<head> 
<title>Test Smart Card Signer Applet</title> 
<script src="http://java.com/js/deployJava.js"></script> 

</head> 

<body> 
    <script> 
     var attributes = { 
          codebase: '.', 
          code: 'PDFSigningApplet.class', 
          archive: 'jars/bcpkix-jdk15on-1.49.jar, ' + 
            'jars/bcprov-jdk15on-1.49.jar, ' + 
            'jars/signing-pdf-applet-1.0-SNAPSHOT.jar, ' + 
            'jars/commons-imaging-1.0-20170517.221134-118.jar, ' + 
            'jars/commons-imaging-1.0-SNAPSHOT.jar, ' + 
            'jars/itextpdf-5.5.11.jar, ' + 
            'jars/itext-pdfa-5.5.11.jar, ' + 
            'jars/itext-xtra-5.5.11.jar, ' + 
            'jars/xmlworker-5.5.11.jar', 
          width: '800', 
          height: '600' 
         }; 
     var parameters = {java_arguments: ''}; // customize per your needs Xmx256m 
     var version = '1.8'; // JDK version 
     deployJava.runApplet(attributes, parameters, version); 
     console.log("Ran script"); 
    </script> 
    ... 

Und hier ist die Verwendung von BouncyCastleProvider in meinem Applet.java:

import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Rectangle; 
import com.itextpdf.text.pdf.PdfReader; 
import com.itextpdf.text.pdf.PdfSignatureAppearance; 
import com.itextpdf.text.pdf.PdfStamper; 
import org.bouncycastle.jce.provider.BouncyCastleProvider; 
... 
BouncyCastleProvider provider = new BouncyCastleProvider(); 

Das Merkwürdige dabei ist, dass alle anderen externen Bibliotheken scheinen gut importiert wurden, aber ich bekomme die Ausnahme mit BouncyCastleProvider.

Was ich habe bereits versucht, auf der Grundlage der ähnlichen Fragen online zu finden:

  • alle meine Gläser mit den folgenden Befehle Gezeichnet:

    jar ufm myjar.jar addToManifest

    jarsigner my.jar myKey

Mit diesem in meinem addToManifest:

Permissions: all-permissions 
Codebase: file:///C:/Users/A667080/Desktop/Test/ 
Application-Name: PDFSigningApplet 
  • Added eine Sicherheitsausnahme für diese Seite in meinem Java-Setup
  • I 7-zip mit Nachweis erbracht, dass mein BouncyCastle jar die .class in meinem Applet enthält

Habe ich etwas vermisst?

Antwort

0

Okay, nach ein paar Stunden habe ich endlich das Problem gefunden. Ich hatte alle diese Einstellungen richtig gemacht, aber:

  • Java war alle meine JAR-Dateien zwischenspeichern, so dass sich nichts unterdessen geändert haben könnte. Um dies zu ändern, gehen Sie zu Systemsteuerung (oder Systemeinstellungen)> Java> Allgemein> Einstellungen und deaktivieren Sie das Kontrollkästchen "Temporäre Dateien auf meinem Computer behalten"
  • Ich hatte meine Gläser nicht umgebaut, so dass keine meiner Änderungen betroffen sind mein Applet. Um mit Maven neu zu erstellen, verwenden Sie andernfalls mvn -U clean install oder jar -cvf DigitalSignerApplet.jar *.class.

Ich hoffe, es wird einigen Menschen in der Zukunft helfen.