下载地址:

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. P3930 SAC E#1 - 一道大水题 Knight

    TLE,额 ,有空再写吧. #include<queue> #include<cstdio> #include<vector> #include<algori ...

  2. ASPECTJ 注解。。。

    public interface ISomeService { public void doSome(); public String dade(); } public class SomeServi ...

  3. dubbo服务降级(1)

    1. 在 dubbo 管理控制台配置服务降级 上图的配置含义是:consumer 调用 com.zhang.HelloService 的方法时,直接返回 null,不发起远程调用. 实际操作是:在 z ...

  4. AngularJS(一):概述

    本文也同步发表在我的公众号“我的天空” 在我们之前学习的前端代码编写过程中,总是通过HTML与CSS来进行页面布局,而使用JS来控制页面逻辑,因此,我们习惯于在JS中来操作页面元素,如以下代码,我们希 ...

  5. MUI获取文本框的值

    MUI事件绑定注意父节点.子节点(也可以是标签选择器) js部分 html部分

  6. windows服务器安装安全狗时服务名如何填写

    安全狗安装时“服务名”这一栏指的是apache进程的服务名称,即进入“任务管理-服务”里显示的名称. phpstudy等软件搭建的环境需要设置运行模式为“系统服务”后才能看到服务名.

  7. GIT新手入门学习教程

    廖雪峰的GIT教程 链接地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

  8. 一点对原生HTTP请求的理解与总结

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10946165.html,多谢,=.=~ 术语 HTTP:超文本传输协议,规定Web浏览器如何从W ...

  9. RAC数据库后台进程介绍

    在RAC数据库上会比单实例数据库多一些进程,这些进程是RAC特有的,为了实现集群数据库功能而设置的. 10g RAC特有进程:$ ps -ef|grep ora_oracle    4721     ...

  10. UVA1602 Lattice Animals 网格动物 (暴力,STL)

    多联骨牌的生成办法,维基上只找到固定的骨牌fix,而free的没有找到. 于是只好写个set判重的简单枚举了. 旋转的操作,可以在坐标轴上画个点,以原点为轴心,逆时针旋转90度,新的点的坐标为(-y, ...