我有一个 JWS (Java Web Start) 部署的小程序,它使用以下库/jar:
red5.jar spring-beans.jar spring-context.jar spring-core.jar apache-mina.jar
bcprov-ext-jdk16-145(充气城堡)
我将所有这些库放在小程序中的原因是 red5.jar 要求您还拥有其他库。然而,BouncyCastle 不知何故不会被 ClassLoader 加载,也不会在 WebStart 项目的编译过程中被 Netbeans 签名。任何指针我该如何解决?
如果我将 Bouncy Castle 包含在我的档案中,我会得到以下结果:
basic: exception: JAR resources in JNLP file are not signed by same certificate.
exception: JAR resources in JNLP file are not signed by same certificate.
JNLPException[category: Launch File Error : Exception: null : LaunchDesc
这是我什至不将其包含在项目中时得到的结果:
com.sun.deploy.net.FailedDownloadException: Unable to load resource: file:/C:/JNA/dist/lib/bcprov-ext-jdk16-145.jar
我不知道哪个罐子需要 Bouncy Castle 罐子,因为它在我的 IDE 中没有指出。此外,即使我在我的项目中包含 Bouncy Castle.jar,Netbeans 也应该默认对其进行签名,但它不会,尽管它会在我的 Web Start 项目中对所有其他 jar 进行签名。然而,使用 jarsigner 快速检查表明所有 jars,包括 Bouncy Castle,都已签名,所以我安全地假设它们都已签名,但 Bouncy Castle 是用另一个证书签名的除外。
这是我的问题:我应该尝试手动签署所有文件(因此它们都具有相同的证书)还是其他地方的问题(例如 BouncyCastle 无法在小程序中签名,或其他什么)?
任何指针将不胜感激
编辑:
我基本上有两种方法,到目前为止都失败了:
方法1.提取每个jar的目录树并将它们一起转储到一个共享目录中,然后将该目录制作一个jar,因此其中的所有文件都由相同的证书签名(一个jar,一个证书,对..)但是, spring STILL 期望文件像这样组织:dist\libs\bcProv.jar,而不是 dist\libs\allLibs.jar,其中所有库都转储到 allLibs.jar。该方法惨遭失败,因为当通过 JWS 部署时,spring 找不到任何库。
方法 2. 使用相同的证书手动签署所有 jar。在花费 10 分钟手动对 jar 进行签名后,这种方法也失败了,并且大胆地抛出一个错误,即 bcProv.jar 没有使用与其他证书相同的证书进行签名。
我感到困惑、困惑和困惑。有任何想法吗?是否有可能在 JWS 小程序中将这些罐子放在一起:
red5.jar
spring-beans.jar
spring-context.jar
spring-core.jar
apache-mina.jar
bcprov-ext-jdk16-145