2012-07-20 13 views
5

Ciao, ho un problema con Java Webstart. Abbiamo HAV una configurazione JNLP dove delle versioni è abilitato cioè:Certificato Webstart Java Problema con il controllo delle versioni JNLP

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

e stiamo usando numeri di versione di ogni vasetto es:

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

Stiamo firmando anche i nostri barattoli di applicazione utilizzando un plug-in di firma Maven Jar.

Tutto bene finora si dice.

Ogni volta che eseguiamo una nuova versione dell'applicazione, modifichiamo il file JNLP con i nuovi numeri di versione per ogni jar (non tutti i jars modificano le versioni) ma come nell'esempio project.jar riportato sopra dice questo numero di versione viene incrementato da 2.5.7.0 a 2.5.7.1. es.

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

Quando i nostri utenti di scaricare la nuova applicazione tramite il file JNLP ricevono il seguente errore:

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

ho aggiunto ulteriore DEBUG per WebStart e hanno trovato il seguente errore nella Java concole:

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 

Sembra che Webstart stia cercando di controllare la cache locale per un jar denominato project_V2.5.7.1.jar (che non esiste), poiché fa parte della nuova versione/download.

Poiché non riesce a trovare il JAR assume che i certificati non corrispondono - da qui l'errore:

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

sto supponendo che questo è errore Webstart! che ci sta causando molti dolori dato che dobbiamo cancellare manualmente la cache di webstart ora prima di ogni release, per ogni utente.

Qualcuno ha un problema simile?

+0

sei riuscito a risolvere questo problema? Ho incontrato esattamente la stessa cosa –

risposta

1

Penso che in base alla mia esperienza ciò che potrebbe accadere è che una volta incrementato il numero di versione dalla 2.5.7.0 alla 2.5.7.1 e firmando nuovamente il jar senza rimuovere la precedente voce manifest, il webstart tende a pensare che il le risorse non sono firmate dallo stesso certificato. Una cosa che puoi provare è:

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

Fammi sapere se questo aiuta.

+0

Ciao, ri-firmiamo sempre di nuovo i vasi. Quindi non c'è un vecchio file manifest nel jar, quindi non penso che questo sia il problema ... – user1539726

0

Per tua domanda "Ebbene ogni volta che facciamo una nuova versione dell'applicazione cambiamo il file JNLP con i nuovi numeri di versione per ogni barattolo (non tutti i vasi cambiano le versioni)"

Quindi hai cambiato la versione numero per altri vasi?

Quando si utilizza un nuovo certificato per firmare i file jar, è necessario modificare il numero di versione per tutti i file jar, altrimenti i file jar con lo stesso numero di versione ma firmati dal nuovo certificato non verranno scaricati e causando il problema.

0

Ho risolto firmando anche i due file jar inclusi nel mio file jnlp con lo stesso certificato che ho usato per il mio jar.

Questo è il mio file 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> 

Così, ho firmato SWT-osx.jar e SWT-windows.jar con lo stesso certificato utilizzato per AFMTray.jar

Problemi correlati