JNA Windows7 CMD
14/01/2016
0
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!
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!
Carlos Carvalho
Curtir tópico
+ 0
Responder
Posts
14/01/2016
Carlos Carvalho
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
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]
[img:descricao=Opção para selecionar]http://arquivo.devmedia.com.br/forum/imagem/448916-20160114-153525.jpg[/img]
Responder
Clique aqui para fazer login e interagir na Comunidade :)