JavaFX e Comunicação Serial (Problema)

3 respostas
jeffersfp

Olá galera do GUJ!

Estou com um problema que não conssigo resolver e acho que não tem solução, mas antes de desistir quero pedir a ajuda de vocês.

É o seguinte: a fins de estudo, desenvolvi uma aplicação JavaFX que faz comunicação serial RS232. Lê e escreve nas portas Seriais do computador. Consegui implementar essa comunicação usando a Java Comm API. As classes que fazem essa comunicação foram desenvolvidas em Java mesmo e a interface foi feita em JavaFX. Ficou super bonito, chique. A aplicação funcionou perfeitamente executando pela IDE (Netbeans 6.9.1), mas quando executo pelo Java Web Start a comuniação Serial não funciona :confused: Assinei os JARs, verifiquei as configurações de acesso no arquivo JNLP e de dependencia de libs e etc… A aplicação abre belezinha, mas quando vou executar alguma ação que envolva a comunicação Serial, não funciona… Por exemplo, fiz uma classe que verifica quais as portas diponiveis no computador pra listar num ComboBox, mas na hora de listar não traz nada. Tá estranho… Desconfio que seja por JavaFX não ter sido desenvolvido para tais fins, por ser pra RIA e restringe o acesso a recursos do sistema, coisa e tal, e pelo fato da Java Comm API usar uma DLL para fazer essa comunicação, pois java não tem bibliotecas nativas pra fazer essas comunicações. Pra poder usar essa API tenho que copiar uma DLL e mais uns outros arquivos pra dentro do JRE e tal.

Então o que eu preciso saber é se JavaFX consegue fazer isso que quero, usar recursos do sistema usando bibliotecas externas (JARs e DLLs). Porque me parece que não é possível devido a nível de segurança, sei lá…

Agradeço antecipadamente pela ajuda, pessoal.

Abraço!

3 Respostas

Jesuino_Master

Olá!

Se fez em java a parte da porta serial, você vai resolver com Java mesmo ^^.

Provavelmente você deve colocar isso no JNLP:

<security> 
      <all-permissions/> 
  </security>

Eu já tive problemas com acesso a máquina cliente e isso resolvia!

jeffersfp

Olá Jesuino!

Agradeço pela resposta rápida :smiley:

Então, cara… A estrutura do meu arquivo JNLP é a seguinte:

<?xml version="1.0" encoding="UTF-8"?> <jnlp codebase=""> <information> <title>SerialTest</title> <vendor>Jefferson</vendor> <homepage href=""/> <description>SerialTest</description> <offline-allowed/> </information> <security> <all-permissions/> </security> <resources> <j2se version="1.6+"/> <property name="jnlp.packEnabled" value="true"/> <property name="jnlp.versionEnabled" value="true"/> <extension name="JavaFX Runtime" href="http://dl.javafx.com/1.3/javafx-rt.jnlp"/> <jar href="SerialTest.jar" main="true"/> <jar name="Javax Comm API" href="lib/comm.jar" main="false"/> </resources> <application-desc main-class="com.sun.javafx.runtime.main.Main"> <argument>MainJavaFXScript=serialtest.Main</argument> </application-desc> </jnlp>
Se quiser o projeto pra jogar no NetBeans, aqui está ele: http://www.4shared.com/file/IHefi5Tk/SerialTest.html
Dentro do arquivo compactado tem uma pasta chamada commapi, nela tem a dll que mencionei e um readme com as intruçoes pra instalar, é bem facil, só copiar pra dentro de uma pasta.
E pra executar vai até a pasta dist do projeto que tem os jars e o jnlp pra executar.
Talvez seja a assinatura dos JARs… Tenho que necessariamente ter um certificado pra assinar meu jar? Criei um par de chaves e assinei meus jars a partir disso: http://wiki.plexinfo.net/index.php?title=How_to_sign_JAR_files
E lá diz o seguinte: Note that a self-signed test certificate should only be used for internal testing, since it does not guarantee the identity of the user and therefore cannot be trusted. A trustworthy certificate can be obtained from a certificate authority, such as VeriSign orThawte, and should be used when the application is put into production. E não tenho um certificado de uma autoridade certificadora… Mas diz que posso usar o que criei para fins de testes… Será que pode ser isso? E outra coisa, o jar da api não estava assinado, eu o assinei com a chave que criei. Será que tem alguma coisa a ver tbm?

luiz.lamardo

Cara, estou com um problema quase igual.

Fiz meu projeto e ele funciona corretamente quando executo na IDE, e peço pra ele listar todas as portas que ele encontra.
Quando rodo o jar gerado, através do comando java -jar fechadura.jar ele não lista nenhuma.

Você conseguiu corrigir seu problema?

Abcs

Criado 10 de fevereiro de 2011
Ultima resposta 18 de abr. de 2011
Respostas 3
Participantes 3