JNA Windows7 CMD

14/01/2016

1

Olá, estou tentando a dias sem sucesso executar o pacote jna.jar, já tentei todos os exemplo que achei na internet e estou sempre obtendo o mesmo erro "Erro: Não foi possível localizar nem carregar a classe principal BeepExample" Estou executando direto no CMD, abaixo minha classe e os comando q estou executando, se alguém puder me dar uma luz ficarei grato.

Minhas variáveis do sistema
HOME_JAVA = C:\Program Files (x86)\Java\jdk1.8.0_65
CLASSPATH = .;%HOME_JAVA%\lib
PATH = C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%\bin

Minha classe
//BeepExample.java
import com.sun.jna.Library;
import com.sun.jna.Native;

public class BeepExample {
public interface Kernel32 extends Library {
// FREQUENCY is expressed in hertz and ranges from 37 to 32767
// DURATION is expressed in milliseconds
public boolean Beep(int FREQUENCY, int DURATION);
public void Sleep(int DURATION);
}

public static void main(String[] args) {
Kernel32 lib = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
lib.Beep(698, 500);
lib.Sleep(500);
lib.Beep(698, 500);
}
}

Comandos no CMD dentro do diretório do arquivo BeepExample.java (O arquivo jna.jar tbm esta no mesmo diretório e tbm no diretorio %HOME_JAVA%\lib)
javac -cp jna.jar BeepExample.java

java -cp jna.jar BeepExample //Quando executo esse comando é que obtenho a mensagem "Erro: Não foi possível localizar nem carregar a classe principal BeepExample"

Se tentar executar como java -cp . BeepExemple o erro muda para o que está abaixo.
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jna/Library
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at BeepExample.main(BeepExample.java:14)
Caused by: java.lang.ClassNotFoundException: com.sun.jna.Library
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 13 more

E se tentar compilar sem o jna.jar (javac BeepExample) o erro é igual o de cima, pelo que pude compreender o problema é que o java não localiza o pacote, mas eu não sei onde colocar ele.

Obrigado!
Responder

Posts

Consegui, tinha que copiar a arquivo para a pasta %HOME_JAVA%/jre1.8.0_65\lib\ext\ agora funcionou nem precisou compilar com a opção -cp jna.jar
ficou assim
javac Inicio.java //Comando executado diretamente no diretório do arquivo Inicio.java
Responder

14/01/2016

Ronaldo Filho

Mas nesse caso você terá que ter cuidado quando for exportar o .jar do projeto, o interessante é você mapear esse JNA no classpath para futuramente não ter que estar disponibilizando ele separadamente do projeto principal, verifica também se no momento de gerar o .jar do seu projeto a opção para importar para o projeto os .jar's library esta marcada.

[img:descricao=Opção para selecionar]http://arquivo.devmedia.com.br/forum/imagem/448916-20160114-153525.jpg[/img]
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira