2012-07-20 127 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具有相同的證書