Using Groovy and JNA to implement GetWindowRect() for Windows environment. The code come from Hovercraft Full Of Eels' answer here. The only difference is I am using Groovy instead of Java.
So instead of
int[] rect = {0, 0, 0, 0};
My code has
int[] rect = [0, 0, 0, 0]
This results in a ClassCastException exception being thrown. So I tried the following ways of initializing rect as int[]:
def rect = [0, 0, 0, 0] as int[]
def rect = (int[]) [0, 0, 0, 0]
def rect = [0, 0, 0, 0].toArray(new int[0])
But none of them solve the casting issue. What am I doing wrong?
Here is the stack trace:
java.lang.ClassCastException: [I cannot be cast to [Ljava.lang.Object;
at com.sun.jna.Function.concatenateVarArgs(Function.java:763)
at com.sun.jna.Library$Handler.invoke(Library.java:207)
at com.sun.proxy.$Proxy21.GetWindowRect(Unknown Source)
at bnsf.create_trains.JNAWin32ApiInterface$JNAUser32$GetWindowRect$4.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130)
at bnsf.create_trains.WindowsApp.getRect(WindowsApp.groovy:178)
at bnsf.create_trains.WindowsApp$getRect$0.callStatic(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:53)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:191)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:211)
at bnsf.create_trains.WindowsApp.kickoff_mainframe(WindowsApp.groovy:94)
at bnsf.TestAutoMain.TestAutoMainMethod(TestAutoMain.java:60)