`
chengyue2007
  • 浏览: 1490288 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

JNative的初步使用

    博客分类:
  • java
 
阅读更多

下载地址:

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.测试类

 

package sms;

import org.xvolks.jnative.JNative;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;

public class SystemTime extends org.xvolks.jnative.util.Kernel32.SystemTime {
		public short wYear;
		public short wMonth;
		public short wDayOfWeek;
		public short wDay;
		public short wHour;
		public short wMinute;
		public short wSecond;
		public short wMilliseconds;
	   /**
	    * 分配内存,并返回指针
	    */
	   public Pointer createPointer() throws NativeException {
	       pointer = new Pointer(MemoryBlockFactory.createMemoryBlock(getSizeOf()));
	       return pointer;
	   }

	   /**
	    * 内存大小
	    */
	   public int getSizeOf(){
	       return 8 * 2;
	   }

	   /**
	    * 获取通过内存指针解析出结果
	    */
	   public SystemTime getValueFromPointer() throws NativeException {
	       wYear = getNextShort();
	       wMonth = getNextShort();
	       wDayOfWeek = getNextShort();
	       wDay = getNextShort();
	       wHour = getNextShort();
	       wMinute = getNextShort();
	       wSecond = getNextShort();
	       wMilliseconds = getNextShort();
	       return this;
	   }

	   public SystemTime() throws NativeException{
	       super();
	       createPointer();
	   }

	   public String toString(){
	       return wYear + "/" + wMonth + "/" + wDay + " at + " + wHour + ":" + wMinute + ":" + wSecond + ":" + wMilliseconds;
	   }

	   public static SystemTime GetSystemTime() throws NativeException, IllegalAccessException {
	       // 创建对象
	       JNative nGetSystemTime = new JNative("Kernel32.dll", "GetSystemTime");
	       
	       //GetSystemTime  是dll中的方法
	       SystemTime systemTime = new SystemTime();
	       // 设置参数
	       nGetSystemTime.setParameter(0, systemTime.getPointer());
	       //执行方法
	       nGetSystemTime.invoke();
	       // 解析结构指针内容
	       return systemTime.getValueFromPointer();
	   }

	   public static void main(String[] args) throws NativeException, IllegalAccessException{
	       System.err.println(GetSystemTime());
		     
	   }
	  
}

 

分享到:
评论
1 楼 cxysilahi 2015-12-07  
请问WIN7 64位,调用报错
Exception in thread "main" java.lang.IllegalStateException: JNative library not loaded, sorry !
at org.xvolks.jnative.JNative.<init>(JNative.java:512)
at org.xvolks.jnative.JNative.<init>(JNative.java:440)

,我已经把.DLL文件放到C:\Windows\System32了

相关推荐

    jnative使用方法总结

    jnative使用方法总结jnative使用方法总结jnative使用方法总结

    JNative使用示例

    TestJNative_Eclipse.rar 为MyEclipse工程 JNativeTest_VC.rar为VC ...主要写了一些JNative调用DLL的例子,包含了JNative回调函数的用法与指针的用法,以供参考,希望对使用JNative的开发人员有帮助 有问题大家一起讨论

    jnative简单的使用

    3. **生成本地方法的头文件**:使用JNative的工具自动生成C/C++头文件,该文件包含了本地方法的定义。 4. **实现本地方法**:在生成的头文件中,实现本地方法的具体逻辑。 5. **编译和链接本地代码**:使用C/C++...

    JNative v1.3 docs

    jnative包用于调用dll动态库,目前(2011-12-20)最新版本为1.4RC2,官方正式版本文档为1.3,详见官方地址: http://jnative.free.fr/docs/ 这是最新的帮助文档HTML离线包,希望对大家有帮助 Packages org.xvolks....

    JNative api说明文档

    对于JNative API来说,Javadoc文件包含了每个接口、类、方法的描述、参数、返回值、异常等信息,是学习和使用JNative的重要资源。通过阅读Javadoc,开发者可以快速理解JNative的功能、用法以及注意事项,从而更高效...

    JNative.jar以及JNative源码

    4. 使用JNative提供的API加载本地库,并调用相应的本地方法。 值得注意的是,JNative并不是唯一的选择,Java中还有其他库如JNA(Java Native Access)和JNR(Java Native Runtime)等,它们提供了不同的方式来调用...

    Jnative资源包源码

    2. 编写Java代码:使用Jnative的注解来声明本地方法,例如`@NativeMethod(name = "nativeFunction", returnType = int.class)`。 3. 编译并生成JNI头文件:使用Jnative提供的工具,如`jnigen`,自动生成JNI头文件和...

    在Java程序中使用JNative调用dll文件

    JNative则是一个简化JNI使用的库,它提供了一些预定义的接口和类,使得开发者无需直接处理JNI的底层细节,如头文件的生成、JNI函数的定义等。JNative的核心是它的`callXXX`系列函数,例如`callStaticVoidMethod`、`...

    JNative综合学习资料

    使用JNative前,需要先进行环境配置,包括下载JNative库,将其添加到项目的类路径中,以及配置相应的编译和链接选项。这个过程可能涉及设置环境变量,配置Makefile,以及正确地编译和链接本地代码。 四、JNative的...

    jnative.rar

    本文将深入探讨JNative的工作原理、使用方法以及其在实际应用中的价值。 首先,JNative是一个Java Native Interface(JNI)的包装器,它简化了Java程序与本地代码之间的交互过程。JNI是Java官方提供的一个接口,...

    jnative调用动态库

    标题中的“jnative调用动态库”指的是Java中使用JNative库来调用本地(操作系统级别的)动态链接库(DLL或SO文件)的技术。在Java中,为了与操作系统底层功能进行交互,比如调用C/C++编译的库,我们可以使用Java ...

    jnative

    这里我们关注的工具是`jnative`,它是一个Java本地接口(Java Native Interface,JNI)的实现,允许Java代码直接调用C++编写的动态链接库(DLL)或共享库(如libJNativeCpp.so在Linux系统中)。这个过程涉及的知识点...

    jnative 1.4

    jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4 jnative 1.4

    jnative的jar包

    10. **社区支持与文档**:开源项目通常会有社区支持和文档,使用者可以通过官方文档或社区论坛获取更多关于jNative的使用指南和最佳实践。 总的来说,jNative是一个强大的工具,它扩展了Java的边界,使其能够充分...

    JNative.jar 包

    JNative.jar包就是这样一个关键组件,它提供了一种方便的方式来在Java程序中使用本地代码。 首先,让我们深入理解JNative.jar的核心概念。JNative.jar是一个包含Java本地接口(JNI)函数的库,使得Java开发者能够...

    JNative完全自学手册

    JNative完全自学手册 本手册旨在帮助读者完全深度理解掌握JNative核心技术,通过实例众多的讲解,让读者快速掌握JNative技术。 JNative是Java Native Interface的缩写,允许Java程序调用本地函数库,实现Java程序...

    org.xvolks.jnative 源码

    《深入解析org.xvolks.jnative源码》 在Java世界中,为了实现与本地代码的交互,开发者经常需要借助JNI(Java Native Interface)技术。然而,JNI的使用门槛相对较高,涉及到C/C++编程,这给许多Java开发者带来了...

    使用JNative对条码打印机进行打印(转别人)

    为了实现这一点,开发者选择使用JNative库,它是一个Java Native Interface (JNI)的封装工具,简化了Java与本地代码交互的过程。 JNative是一个开源的Java库,它允许开发者在不编写C/C++代码的情况下,直接调用本地...

    Jnative1.4_java调用动态库所需jar

    2. **示例或测试动态库**: 压缩包中可能包含一个示例动态库,供开发者学习如何使用Jnative进行Java与本地代码的交互。这个库可能包含了一些简单的函数,如加减乘除运算,以便开发者理解如何在Java中调用这些函数。 ...

Global site tag (gtag.js) - Google Analytics