Ola' pessoal
Por favor uma ajuda quem conhece JNI (Java Native Interface) !!!
Estou com problemas ao usar JNI num RedHat Linux 2.0.36.
Dentro da classe "StartHoudini" ha' um metodo nativo chamado getMacAddress()
Criei o arquivo-cabecalho .h com o javah.
Apos isso implementei o programa em C que implementa o metodo nativo, tudo isso sem
problemas.
Apos entao compilei o programa .c com a seguinte linha:
% gcc -fPIC -I/jdk1.2/include -I/jdk1.2/include/linux -c getMacAddr.c -o getMacAddr.o
Isso me gerou o arquivo getMacAddr.o, que ainda nao e' uma biblioteca ELF.
Entao para gerar a biblioteca ELF libjava-mac-addr.so, eu executo a linha:
% gcc -shared -Wl,-soname,libjava-mac-addr.so -o libjava-mac-addr.so.1 getMacAddr.o
Isso gerou a biblioteca ELF libjava-mac-addr.so.1
Criei um link entao de libjava-mac-addr.so para libjava-mac-addr.so.1
% ln -sf libjava-mac-addr.so.1 libjava-mac-addr.so
Quando chamo a VM para executar StartHoudini recebo uma excessao:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no libjava-mac-addr.so in
java.library.path
at java.lang.ClassLoader.loadLibrary(Compiled Code)
Ao meu ver parece que a VM exige uma propriedade (java.libray.path) que indique onde
as bibliotecas estao. Tentei entao:
% export LD_LIBRARY_PATH=(path para a biblioteca)
% java -Djava.library.path=$LD_LIBRARY_PATH houdini.system.StartHoudini
Continuo com a mesma excessao...
Em tempo: estou executando a VM como root, entao nao e' problema com direitos.
Quem pode me ajudar por favor ??
Sera' que a biblioteca para JNI nao deve ser padrao ELF ?
Abraco
Rodrigo
--------------------------- LISTA SOUJAVA ---------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
[dúvidas mais comuns: http://www.soujava.org.br/faq.htm]
[para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
---------------------------------------------------------------------