[JNA] Native.loadLibrary Error
Bonjour,
J'utilise la librairie jna pour récupérer les noms des fenetres sous windows mais j'ai du mal à comprendre un bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
public class JNA_Main {
// Equivalent JNA mappings
public interface User32 extends StdCallLibrary {
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);
interface WNDENUMPROC extends StdCallCallback {
boolean callback(Pointer hWnd, Pointer arg);
}
boolean EnumWindows(WNDENUMPROC lpEnumFunc, Pointer arg);
}
public static void main(String[] args) {
final User32 user32 = User32.INSTANCE;
user32.EnumWindows(new User32.WNDENUMPROC() {
return true;
}
}, null);
}
} |
Le code suivant marche mais dès que je compartimente le code en créant une classe Main et une classe interface (User32), je plante à la première ligne :
Code:
1 2 3 4 5 6 7 8
|
Exception in thread "main" java.lang.ExceptionInInitializerError
at Win32Main.main(Win32Main.java:11)
Caused by: java.lang.ClassCastException: $Proxy0 cannot be cast to com.sun.jna.Library
at com.sun.jna.Native.loadLibrary(Native.java:382)
at com.sun.jna.Native.loadLibrary(Native.java:364)
at User32.<clinit>(User32.java:8)
... 1 more |
On est obligé de déclarer l'interface jna dans le main ? N'y a t-il pas une solution pour ne pas avoir tout le code dans une même classe?