解压JNative-1.3.2.zip 获得三个文件,分别是:JNativeCpp.dll,libJNativeCpp.so,JNative.jar 。JNativeCpp.dll Windows下用的,拷到windows / system32目录下; libJNativeCpp.so Linux下使用的;5 U2 Q% H/ S/ ^
JNative.jar 这是一个扩展包,加载到你的程序中就可以。
/ D/ y8 R& C% v( u0 }7 c( ?1 f 一个简单例子$ \! ]. [8 B2 n
import org.xvolks.jnative.JNative;" {! }7 B3 u% E2 d& \; X# z' B
import org.xvolks.jnative.Type;9 w. K: H; n# P- V- Y1 }, G2 g4 d
import org.xvolks.jnative.exceptions.NativeException;
( r7 i6 g; L5 t7 f) t$ l9 a public class JNativeTest {2 b5 o0 P, K0 y, G( |7 I0 q
public static final int messageBox(int parentHandle, String message,: c: A% S" k2 R; }" k. n4 V
String caption, int buttons){// throws NativeException, IllegalAccessException {
6 U3 m8 b- _. N$ ?- M% o JNative n = null;, |: F0 m1 V; o a9 s3 y
try {
4 x* ~; |% z, E+ ^+ A n = new JNative("User32.dll", "MessageBoxA"); //“.dll”不用也可以, 常量DLL_NAME的值为User32.dll% v- _8 a3 R6 b
// 构造JNative时完成装载User32.dll,并且定位MessageBoxA方法
# I/ ?, c& \3 P n.setRetVal(Type.INT); // 指定返回参数的类型
( r4 _* s& A+ `. O, t/ s9 J int i = 0;7 E2 W( j. R/ b4 a& d
n.setParameter(i++, Type.INT, "" + parentHandle);
( ?, x8 U3 P- J% w9 Q# E! g' S( m n.setParameter(i++, Type.STRING, message);( v0 w$ Q |% |4 L( W
n.setParameter(i++, Type.STRING, caption);
$ O- g+ R9 x) y, P6 U! b3 b$ g n.setParameter(i++, Type.INT, "" + buttons); // 指定位置上的参数类型和值" t) x! K# G" i* b& s5 v+ u
n.invoke(); // 调用方法
$ @$ d' A+ e. o; Z( o y return Integer.parseInt(n.getRetVal());" j3 Z+ L. c8 U" k
}9 Y6 b" H2 j2 [3 b
catch(Exception ex){6 A# X) g0 T J* v" }* r
ex.printStackTrace();& O" h. P8 h1 M3 B7 t
}
* x3 H& b; ~) G; F& S) C7 n finally {# t0 ^' ]! U7 G7 B
if (n != null); z) g& ~ p& E) M
try {1 x C5 d0 x+ ^$ _0 x6 i& a: b M
n.dispose();
: t3 W1 o' A7 ]4 a } catch (NativeException e) {
* g9 Q) T: F, C4 a // TODO Auto-generated catch block
8 [; i2 r* G. R' W8 t& i: w, ~ e.printStackTrace();1 U. Z) N. ]" i8 }
} catch (IllegalAccessException e) {
) D: e! g1 q4 C6 f* Q, S g+ x // TODO Auto-generated catch block
: y* r" m4 g1 p* K% i e.printStackTrace();, E$ @+ `) |9 [6 s" d5 ?
} // 记得释放! K6 w& q3 J2 S8 s( M2 E) o
}! g8 s' O4 Q# O- f0 y
return 0;# S& x) W% O1 ]* U
}: {6 L0 b8 z1 }0 Q, z8 U5 n9 {
public static void main(String[] args) throws NativeException, IllegalAccessException{
' B' U3 I( V* A: Y, k4 G [ JNativeTest.messageBox(100,"这是使用jnative练习", "jnativetest", 1);; }, M3 l9 n& u1 z" D
}
5 X/ f! i, B& a8 M. E. Z- o: ]( q: Q+ v" `
} |