2012-07-20 131 views
5

嗨我有一个Java Webstart的问题。我们甲肝JNLP配置,其中版本启用即:Java Webstart证书问题与JNLP版本

<property name="jnlp.versionEnabled" value="true"/> 

和我们使用的每个瓶子例如版本号:

<jar href="project.jar" version="2.5.7.0"/>

我们也正在签约使用一个Maven的Jar签名插件我们的应用程序罐子。

所有好为止你说。

每次我们做一个新版本的应用程序时,我们都会用每个jar的新版本号(不是所有jar版本都改变)来更改JNLP文件,但是 与上面的project.jar示例一样可以说这个版本号从2.5.7.0增加到2.5.7.1。例如

<jar href="project.jar" version="2.5.7.1"/>

当我们的用户通过他们收到以下错误JNLP文件下载新的应用程序:

#### Java Web Start Error: 
#### JAR resources in JNLP file are not signed by same certificate 

我已经添加了额外的调试到Webstart的,并已发现在Java检测控制台以下错误:

security: Validating cached jar url=http://servername/lib/project_V2.5.7.1.jar ffile=C:\Documents and Settings\username\Application Data\Sun\Java\Deployment\cache\6.0\10\57344cca-719709af-2.5.7.1- [email protected] 
security: Have 0 common certificates after processing http://servername/lib/project.jar 
network: Remove cache entry: http:///lib/project__V2.5.7.1.jar 

看来,Webstart的尝试检查一个名为project_V2.5.7.1.jar罐子本地缓存(不存在),因为它是新发布/下载的一部分。

,因为它无法找到它假定证书不匹配的JAR - 因此错误:

JAR resources in JNLP file are not signed by same certificate. 

我假定这是Webstart的错误!这给我们带来了很大的痛苦,因为我们必须在每个发行版之前手动清除webstart缓存 - 针对每个用户。

任何人都有类似的问题?

+0

你有没有设法解决这个问题?我遇到了完全相同的东西 – 2013-01-11 16:25:19

回答

1

我认为根据我的经验,可能发生的情况是,一旦将版本号从2.5.7.0增加到2.5.7.1,并且在不删除旧的清单条目的情况下再次签署该jar,则webstart倾向于认为资源不是由相同的证书签署的。有一件事你可以尝试哪些可能有帮助的是:

Unzip the jar causing trouble, purge all META-INF directories from it, jar it and sign it again.

让我知道这是否有帮助。

+0

嗨,我们总是重新签署罐子。所以jar中没有旧的清单文件 - 所以我不认为这是问题... – user1539726 2012-07-23 00:56:29

0

根据您的问题,“好每一个我们做的,我们更改与新的版本号JNLP文件对每个罐子(不是所有的罐子改版本)的应用程序的新版本时”

那你有没有更改版本其他罐子的编号?

当您使用新的证书签名的jar文件,你必须改变所有jar文件的版本号,否则罐子相同版本号的文件,但被新的证书签名将不会被下载并导致了问题。

0

我解决了签约也包括与我用我的罐子相同的证书我的JNLP文件两个jar文件。

这是我的JNLP文件:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="http://10.37.177.100:8085/AFM/resources/client/" href="AFMTray.jnlp"> 
<information> 
    <title>AFMTray</title> 
    <vendor>andreagirardi.it</vendor> 
</information> 

<security> 
    <all-permissions /> 
</security> 

<resources> 
    <j2se version="1.4+" /> 
    <jar href="AFMTray.jar" /> 
    <property name="jnlp.versionEnabled" value="true"/> 
</resources> 

<resources os="Windows" arch="x86"> 
    <jar href="swt-windows.jar" /> 
</resources> 

<resources os="Mac\ OS\ X" arch="x86_64"> 
    <jar href="swt-osx.jar" /> 
</resources> 

<resources os="Mac\ OS\ X" arch="i386 x86"> 
    <jar href="swt-osx.jar" /> 
</resources> 

<application-desc main-class="com.afm.TryLuncher" /> 

<shortcut online="true"> 
    <desktop/> 
    <menu submenu="Esecuzione automatica"/> 
</shortcut> 

所以,我签了用于AFMTray.jarSWT-osx.jarSWT-windows.jar具有相同的证书