[RESOLVIDO] Problema com arquivo JNLP

Pessoal, estou tentando iniciar uma aplicação com JNLP, mas ao iniciar a aplicação ocorre o seguinte erro:

#### Java Web Start Error:
#### O seguinte campo necessário não está no arquivo de início: <component-desc>|<installer-desc>

Meu arquivo JNLP está configurado da seguinte forma:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="http://localhost:8080/ponto/" href="launch.jnlp" spec="1.0+">
    <information>
        <title>JNLP</title>
        <vendor>felipe.pinto</vendor>
        <homepage href=""/>
        <description>JNLP</description>
        <description kind="short">JNLP</description>
        
        
    </information>
    <!-- <update check="always"/> -->
	<security>  
		<all-permissions/>  
	</security>  
    
    <resources>
        <j2se version="1.6+"/>
        <jar href="RelogioPonto.jar" main="true"/>
        
        <jar href="lib/Tidy.jar"/>
		<jar href="lib/core-renderer-R8pre2.jar"/>
		<jar href="lib/iText-2.0.8.jar"/>
		<jar href="lib/postgresql-8.4-701.jdbc4.jar"/>
		<jar href="lib/xpp3_min-1.1.4c.jar"/>
		<jar href="lib/xstream-1.3.1.jar"/>
		<jar href="lib/commons-collections-3.2.jar"/>
		<jar href="lib/commons-lang-2.5.jar"/>
		<extension name="RelogioPonto" href="launch.jnlp"/>
    </resources>
    <application-desc main-class="br.com.ponto.control.Inicial">
        
    </application-desc>
</jnlp>

Ja substitui as linhas 31, 32 e 33 por:

<application-desc main-class="br.com.ponto.control.Inicial"/>

Mas não rola sentimento não…
Já perdi mais de uma hora nisso, mas parece ser aqueles erros bobos, quem alguém bate o olho e descobre de primeira…
O meu JAR está assinado! Uso apache-tomcat-6.0.29 e JDK 1.6.0_27
Alguém poderia me ajudar? Valeus!!

1 curtida

Pessoal, setei a configuração para auto-assinado na construção do NetBeans
(Propriedades > WebStart > Auto assinado por uma chave gerado)

Agora o erro que me é apresentado:
Os recursos JAR do arquivo JNLP não estão assinados pelo mesmo certificado
A minha chave eu gerei com “selfcert”

Alguém pode me ajudar?

1 curtida

Dae rapeize…
Aqui vão os motivos para os problemas relatados…
O primeiro caso era problema com a lib Tidy. Ela tem um certificado próprio e deve ter um JNLP exclusivo.
Pelo que eu entendi quando há bibliotecas assim, deve ter um JNLP para a sua aplicação e esse JNLP deve apontar para cada JNLP dessas bibliotecas já assinadas.

No segundo caso, eu estava assinando o JAR da minha aplicação e utilizava as bibliotecas sem assiná-las.
Ou seja, tem que assinar tudo junto. Fazer isso na mão da uma trabalheira, porém, todavia, entretanto, o NetBeans já faz isso! :shock:
Tá bom tá bom… vocês vão falar: “eu já sabia”, mas eu não!! =P
Para os que não sabem:
Então basta configurar lá no Projeto > Propriedades > Aplicativo > Web Start

  • Habilitando o WebStart
  • Assinatura: auto-assinado por uma chave gerada
    Depois disso dá pra copiar o conteúdo da pasta Dist, jogar num apache tomcat, por exemplo, e ser feliz!!
    Aos já veteranos, desculpe o tópico tão básico, mas isso ainda é novo pra mim!!

Vlw

1 curtida

[quote=Felipe Pinto da Silva]Dae rapeize…
Aqui vão os motivos para os problemas relatados…
O primeiro caso era problema com a lib Tidy. Ela tem um certificado próprio e deve ter um JNLP exclusivo.
Pelo que eu entendi quando há bibliotecas assim, deve ter um JNLP para a sua aplicação e esse JNLP deve apontar para cada JNLP dessas bibliotecas já assinadas.

No segundo caso, eu estava assinando o JAR da minha aplicação e utilizava as bibliotecas sem assiná-las.
Ou seja, tem que assinar tudo junto. Fazer isso na mão da uma trabalheira, porém, todavia, entretanto, o NetBeans já faz isso! :shock:
Tá bom tá bom… vocês vão falar: “eu já sabia”, mas eu não!! =P
Para os que não sabem:
Então basta configurar lá no Projeto > Propriedades > Aplicativo > Web Start

  • Habilitando o WebStart
  • Assinatura: auto-assinado por uma chave gerada
    Depois disso dá pra copiar o conteúdo da pasta Dist, jogar num apache tomcat, por exemplo, e ser feliz!!
    Aos já veteranos, desculpe o tópico tão básico, mas isso ainda é novo pra mim!!

Vlw[/quote]

Olá Felipe.

Tenho uma aplicação java e pretendo utilizar java web start.
Nos testes iniciais com o Netbeans, mesmo utilizando a sua dica de configurar a assinatura para “auto-assinado por chave gerada”, ao tentar executar a aplicação, está aparecendo o seguinte erro:
Os recursos JAR do arquivo JNLP não estão assinados pelo mesmo certificado.
O que pode ser?

Estou

Olá André,
Desculpe a demora para responder…
Faz tempo que eu não utilizo o JNLP não sei te dizer o que pode ser exatamente.
Na época o que eu fiz para resolver foi: criei um projeto em branco, gerei o JNLP, vi que deu tudo certo. A partir daí, eu adicionava uma LIB de cada vez e gerava o JNLP de novo, até o momento que deu o problema.
No meu caso foi com o itext.jar, isso por que há casos de LIB’s que precisam de um JNLP específico.
Assi, no meu casp o launch.jnlp gerou:

<resources>
        <j2se version="1.5+"/>
        <jar href="MeuJarBaludo.jar" main="true"/>
		<jar href="lib/Tidy.jar"/>
		<jar href="lib/core-renderer-R8pre2.jar"/>
		<extension name="itext" href="itext.jnlp"/>
		<jar href="lib/postgresql-8.4-701.jdbc4.jar"/>
		<jar href="lib/xpp3_min-1.1.4c.jar"/>
		<jar href="lib/xstream-1.3.1.jar"/>
		<jar href="lib/commons-collections-3.2.jar"/>
		<jar href="lib/commons-lang-2.5.jar"/>
	</resources>

Perceba que ele gerou um extension para o itext (linha 6), apontando para o arquivo homonimo, nele contém:

<?xml version="1.0" encoding="UTF-8"?> <jnlp spec="1.0+" codebase="http://localhost:9090/teste/" href="itext.jnlp"> <information> <title>Activation</title> <vendor>Sun Microsystems, Inc.</vendor> <offline-allowed/> </information> <offline-allowed/> <resources> <jar href="lib/iText-2.0.8.jar"/> </resources> <component-desc/> </jnlp>
Ele deve ficar no mesmo diretório do teu JAR.

Espero que lhe ajude,
Abço

[quote=Felipe Pinto da Silva]Olá André,
Desculpe a demora para responder…
Faz tempo que eu não utilizo o JNLP não sei te dizer o que pode ser exatamente.
Na época o que eu fiz para resolver foi: criei um projeto em branco, gerei o JNLP, vi que deu tudo certo. A partir daí, eu adicionava uma LIB de cada vez e gerava o JNLP de novo, até o momento que deu o problema.
No meu caso foi com o itext.jar, isso por que há casos de LIB’s que precisam de um JNLP específico.
Assi, no meu casp o launch.jnlp gerou:

<resources>
        <j2se version="1.5+"/>
        <jar href="MeuJarBaludo.jar" main="true"/>
		<jar href="lib/Tidy.jar"/>
		<jar href="lib/core-renderer-R8pre2.jar"/>
		<extension name="itext" href="itext.jnlp"/>
		<jar href="lib/postgresql-8.4-701.jdbc4.jar"/>
		<jar href="lib/xpp3_min-1.1.4c.jar"/>
		<jar href="lib/xstream-1.3.1.jar"/>
		<jar href="lib/commons-collections-3.2.jar"/>
		<jar href="lib/commons-lang-2.5.jar"/>
	</resources>

Perceba que ele gerou um extension para o itext (linha 6), apontando para o arquivo homonimo, nele contém:

<?xml version="1.0" encoding="UTF-8"?> <jnlp spec="1.0+" codebase="http://localhost:9090/teste/" href="itext.jnlp"> <information> <title>Activation</title> <vendor>Sun Microsystems, Inc.</vendor> <offline-allowed/> </information> <offline-allowed/> <resources> <jar href="lib/iText-2.0.8.jar"/> </resources> <component-desc/> </jnlp>
Ele deve ficar no mesmo diretório do teu JAR.

Espero que lhe ajude,
Abço[/quote]

Felipe, eu descobri que o arquivo jce.jar (estava no projeto, na pasta lib) o Netbeans não assinava.
Vi que não fazia falta.
Tirei-o do projeto e foi resolvido.

Nesse aspecto (de assinar os arquivos do projeto), o Netbeans é uma mão na roda.
Não sei se o eclipse tem essa facilidade de assinar tudo automaticamente.

Forte abraço.