下载地址:

JNative_1.4RC2_src.zip : http://jaist.dl.sourceforge.net/sourceforge/jnative/JNative_1.4RC2_src.zip

JNative.jar : http://nchc.dl.sourceforge.net/sourceforge/jnative/JNative.jar

如果以上版本不能完成下载,说明版本有可能更新,请从以下地址中下载:

Resource URL: http://jnative.sourceforge.net/

Source Code: http://sourceforge.net/projects/jnative

Detailed Review: http://jnative.free.fr

JavaDOC: http://jnative.free.fr/docs/

JNative相对于其它同类开源组件的优点:

1.容易使用

2.对数据类型的处理做的出色

3.支持CallBack

下面以一个小Demo来学习一下JNative:

1.理解文件用途

JNative_1.4RC2_src.zip是JNative源代码的压缩包把它解压后从中找到libJNativeCpp.so和JNativeCpp.dll两个文件.JNativeCpp.dll应用在Windows平台下.把它放在c:\windows\system32目录下.libJNativeCpp.so应用在Linux平台下.放在哪个目录,这个我不知道.

把JNative.jar加入到所需的工程中.

把要调用的dll文件也放在c:\windows\system32目录下, 这个目录存在一个文件,

2.测试类

    1. package sms;
    2. import org.xvolks.jnative.JNative;
    3. import org.xvolks.jnative.exceptions.NativeException;
    4. import org.xvolks.jnative.pointers.Pointer;
    5. import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;
    6. public class SystemTime extends org.xvolks.jnative.util.Kernel32.SystemTime {
    7. public short wYear;
    8. public short wMonth;
    9. public short wDayOfWeek;
    10. public short wDay;
    11. public short wHour;
    12. public short wMinute;
    13. public short wSecond;
    14. public short wMilliseconds;
    15. /**
    16. * 分配内存,并返回指针
    17. */
    18. public Pointer createPointer() throws NativeException {
    19. pointer = new Pointer(MemoryBlockFactory.createMemoryBlock(getSizeOf()));
    20. return pointer;
    21. }
    22. /**
    23. * 内存大小
    24. */
    25. public int getSizeOf(){
    26. return 8 * 2;
    27. }
    28. /**
    29. * 获取通过内存指针解析出结果
    30. */
    31. public SystemTime getValueFromPointer() throws NativeException {
    32. wYear = getNextShort();
    33. wMonth = getNextShort();
    34. wDayOfWeek = getNextShort();
    35. wDay = getNextShort();
    36. wHour = getNextShort();
    37. wMinute = getNextShort();
    38. wSecond = getNextShort();
    39. wMilliseconds = getNextShort();
    40. return this;
    41. }
    42. public SystemTime() throws NativeException{
    43. super();
    44. createPointer();
    45. }
    46. public String toString(){
    47. return wYear + "/" + wMonth + "/" + wDay + " at + " + wHour + ":" + wMinute + ":" + wSecond + ":" + wMilliseconds;
    48. }
    49. public static SystemTime GetSystemTime() throws NativeException, IllegalAccessException {
    50. // 创建对象
    51. JNative nGetSystemTime = new JNative("Kernel32.dll", "GetSystemTime");
    52. //GetSystemTime  是dll中的方法
    53. SystemTime systemTime = new SystemTime();
    54. // 设置参数
    55. nGetSystemTime.setParameter(0, systemTime.getPointer());
    56. //执行方法
    57. nGetSystemTime.invoke();
    58. // 解析结构指针内容
    59. return systemTime.getValueFromPointer();
    60. }
    61. public static void main(String[] args) throws NativeException, IllegalAccessException{
    62. System.err.println(GetSystemTime());
    63. }
    64. }

jnative 使用的更多相关文章

  1. JNative library not loaded, sorry ! win7 64位系统

    java调用动态链接库时,使用myeclipse或者其他IDE工具时,针对于web程序,会报这样的错误: java.lang.IllegalStateException: JNative librar ...

  2. JAVA调用动态链接库DLL之JNative学习

    package com.ehfscliax; import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import ...

  3. JNative 传递参数bug

    下载JNative网址:http://sourceforge.net/projects/jnative/files/jnative/ 下载JNative版本:JNative_1.4RC3_bin.zi ...

  4. java JNative调用DLL中带引用类型的方法

    DLL中的被调函数有两个参数,第二个参数是int64类型的引用类型,因此创建8byte的MemoryBlock: JNative n = null;  try {   n = new JNative( ...

  5. Java调用DLL有多种方式,常用的方式有JNative、JNA、JNI等。

    JNative方式调用dll JNative是一种能够使Java语言使调用DLL的一种技术,对JNI进行了封装,可能有些读者会有这样一个问题,JNative对JNI进行了封装,并且是一种跨语言的使用D ...

  6. JNative用法注意事项

    公司要做个跟设备打交道的web系统,需要java调用dll.搞java的同事说JNative看起来挺好使的,找俺帮忙调通.用的是1.3.1版本 环境设置. JNative的调试信息需要打开才能更清楚些 ...

  7. Java使用JNative调用DLL库

    编写测试DLL文件,源文件参照JNA调用用的DLL文件.地址:http://www.cnblogs.com/vevy/p/9076941.html (很重要)右键项目 --> 属性 --> ...

  8. 2、Java调用C语言(JNative法)

    这个方法也是挺麻烦的…… 一.下载JNative.jar,把它放在你jdk下的\jre\lib\ext目录下 二.在 F:\MinGW\JNative 新建 Test.java: public cla ...

  9. 学习JNA,Jnative

    首先说下JAVA调用DLL,Java调用DLL的常用方法大致为几种,JNI,JNA,Jnative等,但实现与易用性差距还是很大,1.JNI用的人比较多,但相对来说比较麻烦要熟悉c并且要使用javac ...

随机推荐

  1. mongodb安全整理

    本文大都网上参考的,我只是整理了一下 一默认配置情况 1.MongoDB安装时不添加任何参数,默认是没有权限验证的,任何用户都可以登录进来,而且登录的用户可以对数据库任意操作而且可以远程访问数据库,需 ...

  2. HDU 5489 Removed Interval (LIS,变形)

    题意: 给出一个n个元素的序列,要求从中删除任一段长度为L的连续子序列,问删除后的LIS是多少?(n<=10w, L<=n ,元素可能为负) 思路: 如果会O(nlogn)求普通LIS的算 ...

  3. UVA 1611 Crane 起重机 (子问题)

    题意:给一个1~n排列,1<=n<=10000,每次操作选取一个长度为偶数的连续区间.交换前一半和后一半,使它变成升序. 题解:每次只要把最小的移动到最左边,那么问题规模就缩小了.假设当前 ...

  4. UVA 1606 Amphiphilic Carbon Molecules 两亲性分子 (极角排序或叉积,扫描法)

    任意线可以贪心移动到两点上.直接枚举O(n^3),会TLE. 所以采取扫描法,选基准点,然后根据极角或者两两做叉积比较进行排排序,然后扫一遍就好了.旋转的时候在O(1)时间推出下一种情况,总复杂度为O ...

  5. [论文理解]Region-Based Convolutional Networks for Accurate Object Detection and Segmentation

    Region-Based Convolutional Networks for Accurate Object Detection and Segmentation 概括 这是一篇2016年的目标检测 ...

  6. python_94_类变量实例变量

    class Role: n=123#类变量 name='我是类name' list=[] def __init__(self,name,role,weapon,life_value=100,money ...

  7. HTML5 跨文档消息传输

    对窗口对象的message事件进行监听 window.addEventListener("message", function(event) { // 处理程序代码 }, fals ...

  8. jq封装插件,简单dome

    (function($) { $.fn.extend({ bold: function() { this.css({ fontWeight: "bold", color: 'red ...

  9. 35. Search Insert Position@python

    Given a sorted array and a target value, return the index if the target is found. If not, return the ...

  10. 27. Remove Element@python

    Given an array nums and a value val, remove all instances of that value in-place and return the new ...