2017-06-15 89 views
0

我想提出一个Java小程序签署从客户端PDF和我遇到在Internet Explorer中启动小程序时出现以下错误:Java小程序:java.lang.NoClassDefFoundError

The error I get

这是我的文件夹建筑:

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 
│ └── ... 

这里是我的HTML代码

<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> 
    ... 

这里是使用BouncyCastleProvider在我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(); 

这里奇怪的是,所有其他外部库似乎已经得到了很好的导入,但我得到BouncyCastleProvider例外。

我已经根据网上发现了类似的问题已经尝试过:

  • 签署的所有使用我的罐子下面的命令:

    罐子UFM myjar.jar addToManifest

    jarsigner my.jar myKey

有了这个在我addToManifest:

Permissions: all-permissions 
Codebase: file:///C:/Users/A667080/Desktop/Test/ 
Application-Name: PDFSigningApplet 
  • 添加了对这个网站在我的Java设置安全异常
  • 我验证了使用7-ZIP,我BouncyCastle的罐子包含在我的小程序使用的.class

我错过了什么吗?

回答

0

好几个小时后我终于找到了问题。我已经正确完成了所有这些设置,但是:

  • Java正在缓存我所有的jar文件,所以在此期间没有任何变化。要改变这种情况,请转到控制面板(或系统首选项)> Java>常规>设置,然后取消选中“在我的计算机上保留临时文件”框。
  • 我没有重建我的罐子,我的小程序。要重建使用Maven使用mvn -U clean installjar -cvf DigitalSignerApplet.jar *.class否则。

我希望它能帮助未来的一些人。