Mostrando postagens com marcador usb. Mostrar todas as postagens
Mostrando postagens com marcador usb. Mostrar todas as postagens

sexta-feira, 9 de setembro de 2011

no JavaxUsb in java.library.path


javax.usb.UsbException: Error while loading shared library libJavaxUsb.so : no JavaxUsb in java.library.path
at com.ibm.jusb.os.linux.JavaxUsb.loadLibrary(JavaxUsb.java:35)
at com.ibm.jusb.os.linux.LinuxUsbServices.<init>(LinuxUsbServices.java:30)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at javax.usb.UsbHostManager.createUsbServices(Unknown Source)
at javax.usb.UsbHostManager.getUsbServices(Unknown Source)
at teste.TraverseUSB.main(TraverseUSB.java:18)

O erro que eu mencionei no final do post passado é esse aqui em cima, e o link que me ajudou a desvendar o problema foi esse.

A variável LD_LIBRARY_PATH contém uma lista de diretórios separados
por ";" onde o sistema irá procurar por determinada biblioteca de
carregamento dinâmico. Em Linux, essas bibliotecas são arquivos com
extensão ".so". São os equivalentes aos arquivos ".dll" do ruindows.
Essa variável funciona de forma semelhante ao PATH que serve pra
encontrar arquivos executáveis.
Na verdade, quando um programa precisa, digamos, de uma libGL.so (para
o OpenGL), o sistema procura esse arquivo nos diretórios listados na
LD_LIBRARY_PATH, depois no arquivo /etc/ld.so.cache e por último nos
diretórios /usr/lib e /lib.
Baseado nessas informações e na mensagem de erro, mandei localizar o arquivo libJavaxUsb.so, que foi encontrado dentro de javax-usb-ri-linux/lib. Fiz uma cópia deste arquivo pra dentro da pasta /usr/lib para que o sistema pudesse encontrar a biblioteca, resolvendo o problema.

Properties file javax.usb.properties not found.

javax.usb.UsbException: Properties file javax.usb.properties not found.
at javax.usb.UsbHostManager.setupProperties(Unknown Source)
at javax.usb.UsbHostManager.getProperties(Unknown Source)
at javax.usb.UsbHostManager.createUsbServices(Unknown Source)
at javax.usb.UsbHostManager.getUsbServices(Unknown Source)
at teste.TraverseUSB.main(TraverseUSB.java:18)

Depois de compilar a api na continuação dos meus estudos estou seguindo o manual da JSR80 no site da IBM. Ainda estou enfrentando alguns problemas com o primeiro exercício, e o primeiro erro que deu foi esse que eu descrevi acima, ele procura por um arquivo javax.usb.properties mas não o encontra. 

Para resolver este problema eu mandei localizar o arquivo javax.usb.properties nas pastas que eu havia descompactado enquanto compilava e o encontrei, caso você não encontre o seu e queira testar com o meu (não acho que seja uma boa ideia), pode baixá-lo aqui. Uma vez encontrado você só deverá colocá-lo dentro da sua pasta src:
Tendo feito isso, o erro descrito acima deverá parar. Ainda estou enfrentando um outro problema depois que este é resolvido, assim que conseguir resolver eu posto aqui.

quinta-feira, 8 de setembro de 2011

Como compilar JSR80

Tenho tido vários problemas com a API JSR80 que serve para acessar e manipular dispositivos USB através do Java. Já postei em alguns lugares as minhas dificuldades de uso do API mas por enquanto não tive resposta.
Estou usando Ubuntu 11.04 e meu primeiro problema com o uso da API foi encontrar os arquivos para baixar, depois precisei compilar os arquivos que eu baixei aqui. Depois de baixar e descompactar os arquivos 
javax-usb_1.0.2.zip  
javax-usb-ri_1.0.2.zip 
javax-usb-ri-linux_1.0.2.zip 
você deverá abrir o terminal e instalar o "ant", eu não o conheço bem mas parece ser um compilador de arquivos jar. Instale o ant através de:
sudo apt-get update
sudo apt-get install ant
Depois ainda no terminal entre na pasta que você descompactou o javax-usb_1.0.2.zip (cd /home/usuario/Downloads/javax-usb_1.0.2 por exemplo) e digite:
ant jars
com isso ele deverá gerar um arquivo de nome jsr80.jar dentro de javax-usb_1.0.2/lib e você já terá o seu primeiro jar. Para o segundo você vai fazer a mesma coisa, descompacte o javax-usb-ri_1.0.2.zip entre na pasta dele e na hora de compilá-lo você deverá referenciar o jsr80 que você compilou anteriormente, então supondo que você colocou ele na sua /home/usuario o comando ficará assim:
ant jars -lib /home/usuario/jsr80.jar
Ao fazer isso o ant lê o jsr80.jar para a compilação do seu jsr80_ri.jar que também é gerado dentro de javax-usb-ri_1.0.2/lib. Agora para compilar o terceiro você irá descompactá-lo em alguma pasta como fez com os anteriores, entrar nesta pasta através do terminal e executar o comando referenciando os dois jars que você já compilou:
ant jars -lib /home/usuario/jsr80.jar -lib /home/usuario/jsr80_ri.jar
Quando fizer isto ele já vai da mesma forma como os outros o arquivo jsr80_linux.jar dentro da pasta lib. Prontinho, agora você tem seus 3 jars compilados. Eu não consegui fazer nada além disso, mas acho que é um primeiro passo importante que eu não tinha encontrado em blog nenhum, se algum dos comandos não funcionar, ou tiverem problemas com download perguntem nos comentários que tentamos resolver juntos, eu ainda sou um aprendiz de dev.