JNI é Java Native Interface, isto é, uma maneira padrăo de se acessar código
nativo, por exemplo programas feitos em C ou C++. O problema é que se perde
em portabilidade.
Ok ?
Aristides
----- Original Message -----
From: "Alexandre Carvalho" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, February 19, 2000 11:14 PM
Subject: Re: [SouJava-J] JNI em Linux


> Gostaria de saber para que serve a JNI. É um compilador direto para a
plataforma?? É mais rápido que o Java normal?
>
> [EMAIL PROTECTED] wrote:
>
> > 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]
>
  ---------------------------------------------------------------------
>
>     --------------------------- 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]
>     ---------------------------------------------------------------------

    --------------------------- 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]
    ---------------------------------------------------------------------

Responder a