JavaFX - Acessar sistema via web / JavaWebStarter(RESOLVIDO)

Boa noite!

Estou há semanas estudando a fundo JavaFX. Ja li e reproduzi “N” tutoriais. Desenvolvo em JavaDesktop desde 2009. Sempre distribuí meus arquivos através do JNLP principalmente pela facilidade na atualização dos clientes. Como todos sabem, a partir de uma certa atualização no JAVA 7, essa tarefa não ficou tão fácil. Têm projetos exemplo no proprio netBeans que se vc executar no desktop, executa normal. Se vc executar no browser, tb executa, se baixar o JNLP tb vai normal. Qual a diferença do exemplo para o exemplo que desenvolvi? O acesso à banco via JPA. Creio eu que devido ao fato de adicionar bibliotecas dependentes, mesmo assinando, não funciona.

Alguém aqui já passou por esse erro recentemente? Recentemente, pelomenos desde 2015 pra cá. Pois com o java7, vc ainda podia autoassinar, reduzir segurança do JAVA e essas coisas. Hoje já não é mais bem assim. Vou colocar abaixo imagens do meu projeto, de como fiz pra assinar os arquivos e o código do arquivo JNLP.

Desde já agradeço a quem puder colaborar.

Imagem da estrutura do meu projeto:

Sessão Deploymente da propriedade do projeto:

Criação do certificado para assinatura dos “Jar”:

Arquivos gerados na pasta “dist” do projeto:

Arquivo JNLP gerado:

> <?xml version="1.0" encoding="utf-8"?>
> <jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="LoginExampleJPA.jnlp" codebase="http://localhost/dist/">
>   <information>
>     <title>LoginExampleJPA</title>
>     <vendor>Refactore Ass. Informática</vendor>
>     <description>null</description>
>     <offline-allowed/>
>   </information>
>   <resources>
>     <jfx:javafx-runtime version="2.0+" href="http://javadl.sun.com/webapps/download/GetFile/javafx-latest/windows-i586/javafx2.jnlp"/>
>   </resources>
>   <resources>
>     <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
>     <jar href="Login Example-JPA.jar" download="eager" />
>     <jar href="lib/eclipselink.jar" size="8884799" download="eager" />
>     <jar href="lib/javax.persistence_2.1.0.v201304241213.jar" size="185041" download="eager" />
>     <jar href="lib/mysql-connector-java-5.1.23-bin.jar" size="860467" download="eager" />
>     <jar href="lib/org.eclipse.persistence.jpa.jpql_2.5.2.v20140319-9ad6abd.jar" size="1444036" download="eager" />
>     <jar href="lib/postgresql-9.2-1002.jdbc4.jar" size="597204" download="eager" />
>   </resources>
> <security>
>   <all-permissions/>
> </security>
>   <shortcut><desktop/></shortcut>
>   <applet-desc  width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback"  name="LoginExampleJPA" >
>     <param name="requiredFXVersion" value="2.0+"/>
>   </applet-desc>
>   <jfx:javafx-desc  width="800" height="600" main-class="com.Login"  name="LoginExampleJPA" />
>   <update check="background"/>
> </jnlp>

Quando mando executar o projeto no browser, ele roda e aparece a mensagem:

JavaFX application could not launch due to system configuration (show error details). See java.com/javafx for troubleshooting information.

Ao executar o JNLP pelo HTML, nada acontece, ele roda como se fosse abrir e fecha.

Quando executo direto o JNLP aprece a mensagem de erro:

Ao clicar em detalhe, a mensagem é essa:

ExitException[ 3]com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://localhost/dist/Login Example-JPA.jar
at sun.plugin2.applet.JNLP2Manager.downloadResources(Unknown Source)
at sun.plugin2.applet.JNLP2Manager.prepareLaunchFile(Unknown Source)
at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Bom pessoal, tentei detalhar o máximo possível todo o cenário e o que está ocorrendo.

Mais uma vez, antecipadamente, agradeço as ajudas.

Abraço,

Marcos Reis

Ninguém aqui no fórum utiliza dessa tecnologia pra distribuir seus produtos hoje? Ninguém usa JavaFx/JNLP?

Qualquer luz seria bem vinda. Estou quase desistindo definitivamente de Java por conta disso. Inviável manter uma tecnologia pra Mobile, uma pra web, uma pra desktop…

Já pesquisei por esse problema ná Oracle, no forum do NetBeans.org

Marcos, boa tarde!
Rapaz… nunca usei esse protocolo JNLP. Mas pela (bem) rápida lida que dei, parece servir para acessar recursos remotos que estão num servidor web.
Bom vamos lá, depois de algumas pesquisas:
1. O mais provável pode ser um problema relacionado ao caminhos. Dê uma olhada nesse link;
2. Subindo o servidor, você consegue acessar essa url? http://localhost/dist/Login Example-JPA.jar
3. Se conseguir, o browser faz algumas modificações na URL. Pode ocorrer algum problema nos espaços. Tente mudar os espaços por underline, por exemplo;
4. Por experiência, eu tive problemas com versionamento do Java/JavaFX. Passei a adotar o Java 1.8_xxu para usar a versão mais recente do JavaFX (esse link também mostra problema de compatibilidade entre versões);
5. Um usuário reabriu um erro na IDE Netbeans sobre isso, como pode ser visto aqui. Chances remotas, mas pode ser (uso IntelliJ então não sei dizer).

Espero que possa te dar um norte. Aparentemente não se trata de um erro envolvendo o JavaFX.

Problema resolvido.

Nas configurações do JAVA: Security->Site List-> Acrescentar o endereço do site; Network Settings -> Direct Connection;

OBS.: Parece idiota, mas vale ressaltar, em nomes de projeto/classe, jamais usem espaços.

Grato pela força e pela boa vontade @xisvaldo

Abraço a todos!

1 curtida

Estou tendo o mesmo problema e gostaria que me ajudasse com a maxima urgencia por favor…

Sempre gostei e usei JWS para distribuição pelos mesmos motivos seus.
Mas o Java e o JavaFX tem evoluido.
Hoje tem a versão de JavaFX 14, e ficar preso a versões velhas podem não justificar muito.
Acontece que a Oracle descontinuou o JWS pelos navegadores não suportar mais Java.
Como solução foi criado uma versão open source que estou usando atualmente.