我正在努力让我的 jar 文件在 Web 浏览器中运行。 当我从 Eclipse 运行小程序时,一切正常,但从浏览器中我得到一个 NoClassDefFoundError :
Exception: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/bouncycastle/openpgp/PGPException
java.lang.RuntimeException: java.lang.NoClassDefFoundError: org/bouncycastle/openpgp/PGPException
at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3116)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1498)
at java.lang.Thread.run(Thread.java:662)
虽然 PGPException 位于 bcpg-jdk16-146.jar 存档的 org/bouncycaSTLe/openpgp/目录中... 我的 JAR 包含来自 bouncycaSTLe 的库和我的小程序类。这是它的架构:
META-INF
-MANIFEST.MF
-CNSAPPLE.SF
-CNSAPPLE.RSA
lib
-bcprov-jdk16-146.jar
-bcpg-jdk16-146.jar
com
-CNSApplet.class
list 文件定义类路径和主类如下:
Class-Path: lib/bcpg-jdk16-146.jar lib/bcprov-jdk16-146.jar
Main-Class: com.CNSApplet
以及调用小程序的html代码:
<applet code="com.CNSApplet.class" width="800" height="300" archive="cnsapplet.jar">
当然html文件和cnsapplet jar文件在同一个目录下。
我尝试用 sun method 制作我的 jar 还有这个other one .
最佳答案
Java 默认的 ClassLoader 不会查找 JAR 中嵌入的 JAR 文件。这意味着为了将库包含在 JAR 的类路径中,您可以执行以下任一操作:
- 解压库 JAR,然后将类文件打包到您自己的 JAR 中
- 将库 JAR 放在 JAR 之外,然后使用 list 文件引用它们(就像您所做的那样)。
关于java - 带有 bouncycaSTLe 库的 jar 文件 : NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8309818/