我正在使用Morena API,以便通过Java使用扫描仪。然而,Morena jar已经使用不同的密钥签署,然后是我项目的其余部分。当我尝试运行我的applet并给出以下运行时异常时,这会导致问题:
"Jar resources in JNLP file are not signed by the same certificate"
我正在为我的项目使用netbeans,那么我怎样才能强迫Morena使用我的签名而不是随附的签名呢?
由netbeans自动生成的JNLP文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp href="launch.jnlp" spec="1.0+">
<information>
<title>ArFile</title>
<vendor>Matthew Pigram</vendor>
<homepage href="http://www.allcarecomputerservices.com"/>
<description>ArFile is designed to allow users to effectively manage documents through a convenient cloud storage facility</description>
<description kind="short">ArFile</description>
</information>
<update check="always"/>
<security>
<all-permissions/>
</security>
<resources>
`<j2se java-vm-args="-Djava.security.policy=applet.policy" version="1.6+"/>
<jar href="ArFile.jar" main="true"/>
<jar href="lib/commons-codec-1.4.jar"/>
<jar href="lib/jdom.jar"/>
<jar href="lib/security-1.1.jar"/>
<jar href="lib/emcesu.jar"/>
<jar href="lib/commons-io-2.3-javadoc.jar"/>
<jar href="lib/commons-io-2.3-sources.jar"/>
<jar href="lib/commons-io-2.3-test-sources.jar"/>
<jar href="lib/commons-io-2.3-tests.jar"/>
<jar href="lib/commons-io-2.3.jar"/>
<jar href="lib/jodconverter-core-3.0-beta-4.jar"/>
<jar href="lib/juh-3.2.1.jar"/>
<jar href="lib/jurt-3.2.1.jar"/>
<jar href="lib/ridl-3.2.1.jar"/>
<jar href="lib/unoil-3.2.1.jar"/>
<jar href="lib/mail.jar"/>
<jar href="lib/log4j-1.2.16.jar"/>
<jar href="lib/morena.jar"/>
<jar href="lib/morena_windows.jar"/>
</resources>
<applet-desc height="604" main-class="com.allcare.arfile.ArFileJApplet" name="ArFile" width="756">
</applet-desc>
</jnlp>`
还有这一个:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="${jnlp.codebase.value}">
<information>
<title>jnlpcomponent1</title>
<vendor>JARSIGNI</vendor>
</information>
<security>
<all-permissions/>
</security>
<resources>
<jar href="lib/morena.jar" download="eager"/>
<jar href="lib/morena_windows.jar" download="eager"/>
</resources>
<component-desc/>
</jnlp>
答案 0 :(得分:1)
这是Java Web Start确保客户端下载的jar不会受到损害的方式。这是一个安全功能。
您可以尝试使用您的证书而非默认证书签署Morena jar。
使用keytool
和jarsigner
即可签署广告。
编辑:从Java Web Start 1.5.0开始,您可以对jar进行多次签名,在另一个现有证书链上添加代码签名证书
http://docs.oracle.com/javase/1.5.0/docs/guide/javaws/developersguide/faq.html#221
因此,您可以使用您的签名签署Morena jar,这将解决问题。
答案 1 :(得分:1)
以下是解决此问题的两种方法: