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 :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager