Pergunta

Por mais que tentasse, não posso obter um arquivo JNLP para executar localmente (através de um clique duplo). Parece ser uma questão de localizar um arquivo jar, mesmo quando eu especificá-lo em relação ao arquivo jnlp. Eu recebo o seguinte erro:

O campo href tem um inválido valor: helloworld.jar

Isso acontece mesmo quando o arquivo JNLP está na mesma pasta como helloworld.jar. Eu tenho feito pesquisas e este é um problema consistente especialmente para pessoas que querem empacotar um aplicativo em um JNLP CD e usar. A "solução" única Sun-fornecido é a capacidade de especificar a base de código via linha de comando, mas isso realmente não ajuda muito. Eu não entendo por que eles não assumir ou permitir a base de código para ser "" ou "file: //". - Eu tentei esses tipos de coisas no parâmetro CODEBASE da marca jnlp (dentro do arquivo) e nada funcionou

.

É extremamente conveniente para mim usar um arquivo JNLP porque eu não precisa se preocupar com a detecção de plataforma, bibliotecas nativas, ou mesmo os principais arquivos JOGL frasco; Eu simplesmente incluir esta linha e tudo é feito para mim:

<extension name="JOGL" href="http://download.java.net/media/jogl/builds/archive/jsr-231-2.0-beta10/webstart/jogl-all-awt.jnlp" />

Estou na esperança de encontrar algo que pode fazer o mesmo tipo de coisa. Se não, eu posso manualmente (ou com Ant) pegar os arquivos JOGL frasco, não é um grande negócio; apenas uma daquelas coisas que JNLP faz por mim e eu estou realmente vou sentir falta.


O que é a melhor alternativa para arquivos JNLP, para mim usar localmente (ou seja, dê um clique duplo para executar)? Há algo tão elegante ou eu só precisa escrever um script shell para Linux, um arquivo de lote para Windows, e ter Ant detectar e baixar os frascos JOGL apropriadas?

Foi útil?

Solução

Eu usei um arquivo .jnlp como este para iniciar o software Java Web Start localmente

  1. especificar a base de código assim: <jnlp spec="1.0+" codebase="file://localhost/X:/path/to/jnlp/" href="software.jnlp">

  2. recursos lista com caminhos relativos: <resources> <jar href="lib/software.jar" main="true" /> <jar href="lib/softwareLibrary.jar" main="true" /> ... </resources>

  3. e, finalmente, dizer Web Start onde ele pode encontrar o ponto de entrada do software dentro do frasco marcado com main="true": <application-desc main-class="com.example.Main" />

A única coisa que você precisa mudança ao implantar remotamente é o parâmetro de base de código.

Outras dicas

Basta remover os atributos codebase e href de tag jnlp.

<jnlp spec="1.0+">

Este é suportado desde java 1.6u18.

O sistema JNLP foi melhorada com o Java 6 Update 10 (um tempo atrás), mas ainda é bastante difícil de debug (permitindo o rastreio completo no Console Java, e percorrendo o código fonte javaws.

Na sua situação eu iria a milha extra e fazê-lo funcionar. Talvez você daria uma JNLP arquivo completo mostrando o problema?

Use um manifesto para o seu jar. Lá você pode definir a classe principal para iniciar e as bibliotecas necessárias. Veja as principais argumentos de classe e Class-Path na especificação manifesto.

JNLP é projetado para lançamento de rede (especificamente http (s)) e sem uma rede a implementação Java deve ficar realmente confuso. Mesmo amadurecer projetos como vara eclipse com o .sh, .bat opção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top