.jar里的api jnative_jnative-1.0.jar - CSDN
  • 介绍:SourceForge上的JNative:http://sourceforge.net/projects/jnative/JNative Docs(1.3版本): http://jnative.free.fr/docs/This library allows developers to access native libraries (DLL and lib.so) from

     介绍:

    SourceForge上的JNative:http://sourceforge.net/projects/jnative/

    JNative Docs(1.3版本): http://jnative.free.fr/docs/

    This library allows developers to access native libraries (DLL and lib.so) from java. You do NOT need to compile a line of C/C++ to use it: it's dynamic !! Now Win32 DLL and shared libraries are usable with Java ;)

     

    JNative是一个开放源代码的JAVA JNI工具库,作者是mdenty, thubby。它使得开发者能够在java项目中很方便地访问本地库(DLL和lib.so)。你不必自己编译c/c++程序区使用它:它是动态的!!这个库中已经集成了许多win32 dll和动态共享库,现在java可以很容易地调用它们。

     

    使用方法:

    1.下载JNative库

    二进制库文件JNative_1.4RC3_bin.zip

    源代码JNative_1.4RC3_src.zip (非必须)

     

    2.将JNative_1.4RC3_bin.zip解压后,得到JNative.jar文件。

    然后把它导入你的java项目中,或者加入到系统的classpath变量中。

    再将JNative.jar中的lib-bin目录下的JNativeCpp.dll文件解压到任意目录中(此例为c:/windows)。

    Eclipse中的导入步骤为:在workspace项目文件夹上单击右键,然后依次选择Build Path->Add External Archives,找到JNative.jar打开。

     

    3.在你的JAVA项目中新建一个文件JNativeTest.java

    输入以下源代码:

     

     

    4.解释执行即可看到效果

     

    PS.如有错误之处,欢迎拍砖

    展开全文
  • jnative下载

    2020-07-18 23:30:44
    JNative.jar , JNativeCpp.dll ,libJNativeCpp.so,java通过JNative调用动态dll所需的文件jar
  • Java通过Jnative调用windows API接口

    前几天在做一个自动测试wifi性能的工具,由于之前没做过,于是在万能的互联网找各种资料,折腾了几天,总算是做出来了。

    在这里算是整理总结一下吧。

    工具是在netbeans上开发的,用java写的。我要实现的功能是去获取电脑网卡中的wifi列表,然后逐个自动连接,测试,断开,连接下一个。

    由于java并没有封装wlan相关的接口,于是需要去调用windows API的接口;但是又不能直接去调用,需要通过JNATIVE去调。

    一开始我直接通过jnative去调windows WLAN的接口,但是有个问题,从Java传参到windows API接口很容易出错。于是又换了个方法,先用C++对windows WLANAPI接口进行一层封装,参数设为java层容易识别的参数,比如string,int等,然后再通过jnative去调我们封装好的方法。


    补充一点:在发布软件的时候,如果在没有安装VS的电脑上,会识别不到我们生成的DLL文件从而导致报异常。这个问题我们可以这么解决:将C++生成DLL的项目包拷到工具目录下,然后再Java层修改,让它直接去调用项目包下的dll文件。


    以下是我找的一些比较有用的资料:

    关于wlanapi的:

    0.最有用的资料,微软的windows API接口说明
    https://msdn.microsoft.com

    1.C#使用Managed Wifi API连接带密码的SSID .
    http://blog.csdn.net/much0726/article/details/50686465


    2.VC++玩转Native Wifi API
    http://blog.csdn.net/lincyang/article/details/34430939/


    3.Native wifi API使用 ,接口简介
    http://blog.csdn.net/whatday/article/details/41518949


    4.Native Wifi 中 WlanSetProfile 出现1206错误的几种可能及解决方法
    http://blog.csdn.net/ytrock/article/details/48272371

    5.C#编程使用Managed Wifi API连接无线SSID
    http://blog.csdn.net/m593192219/article/details/9363355


    关于JNATIVE使用:

    1.JAVA调用DLL,Java调用DLL的常用方法
    http://www.codeweblog.com/%E5%AD%A6%E4%B9%A0jna-jnative%E4%B8%AA%E4%BA%BA%E6%80%BB%E7%BB%93/


    2.JNative使用深入解析——基本编程
    http://fenger-chui.iteye.com/blog/1154435


    关于DLL的封装

    1.C/C++中生成和使用DLL 
    http://blog.sina.com.cn/s/blog_4aa8874401016vfe.html


    2.C++ dll调用-动态(显式) 传参调用
    http://www.cnblogs.com/lhbssc/archive/2012/02/08/2342853.html

    展开全文
  • 去年的九月末和十月初,研究过... 这四种方法先后是:socket,javax.comm,javax.rtx,jnative。 读卡器的厂家带一个例子,VB的,内部使用他们封装的.dll动态函数链接库,开始一直没想用这个.dll文件,所有的指令都是

      去年的九月末和十月初,研究过如何用java对串口操作,链接一个RFID读卡器。

      对串口发送指令和接收数据,交互的过程是单工异步。先后尝试了四种方法,最后一种成功了!

      这四种方法先后是:socket,javax.comm,javax.rtx,jnative。

      读卡器的厂家带一个例子,VB的,内部使用他们封装的.dll动态函数链接库,开始一直没想用这个.dll文件,所有的指令都是自己看着协议写。

      导致了前面方法的失败,他们也一定能成功,每种方法都尝试了两天。只是最后一种最安全。

      最近,要使用硬件了,可能会涉及.dll。所以将jnative的方法回忆一下:

       先下载Jnative所要使用的包http://sourceforge.net/projects/jnative

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

        解压下载的JNative包获得三个文件,分别是:JNativeCpp.dlllibJNativeCpp.soJNative.jar JNativeCpp.dll是提供给WINDOWS

        的库组件需要复制到WINDOWS/SYSTEM32目录下

       libJNativeCpp.so是提供给linux下的组件,没怎么用- -

       JNative.jar这是一个扩展包,可以复制到c:/jdk/jre/lib/ext下自己的目录结构,会自动加载,或者直接引入到工程包中。

       结构映射(Structure Mapping

     

    Type

    Length

    JNative class

    DWORD

    4

    org.xvolks.jnative.misc.basicStructures.LONG

    HWND

    4

    org.xvolks.jnative.misc.basicStructures.HWND

    COLORREF

    4

    org.xvolks.jnative.misc.basicStructures.LONG

    COLORREF*

    4

    org.xvolks.jnative.pointers.Pointer

    LPARAM

    4

    org.xvolks.jnative.misc.basicStructures.LPARAM

    LPCCHOOKPROC

    4

    org.xvolks.jnative.util.Callback

    LPCTSTR

    4

    org.xvolks.jnative.pointers.Pointer

    首先创建JNative对象

    JNative n=new JNative(*.dll,function)此处为库文件加载并指定方法名

    好多刚开始弄的朋友经常会问总是找不到DLL库文件和function方法,那是因为搞JAVA的不熟悉C的库文件创件,我们自己写的文件只提供了对CC++内部的使用,我们需要把外部调用的DLL文件进行声明下面例子就如这样写

    #ifndef  wwweee

    #define wwweee

    extern "C" _declspec (dllexport) int add(int a,int b);

    #endif

    --------------------------end------------------------next-------I-just-code-it --------------------

     

     

    此外大家还可以使用JNI,Jawin,Jacob等方法来做!

    展开全文
  • 因为项目的需求,要在JAVA项目中调用Windows的Dll(动态链接库)文件,之前用Jni调用过C写的Dll文件,比较麻烦,这里不多说,...jnative.sourceforge.net/ 到这里下载JNative开源项目,我下载的是1.3.2 解压JNative

    因为项目的需求,要在JAVA项目中调用Windows的Dll(动态链接库)文件,之前用Jni调用过C写的Dll文件,比较麻烦,这里不多说,网上也有很多这方面的文档。在网上找到一个开源的组件JNative,使用后感觉比较方便。

    • 下截JNative组件

      jnative.sourceforge.net/ 到这里下载JNative开源项目,我下载的是1.3.2

    • 解压JNative-<st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.3.2</st1:chsdate>.zip

      获得三个文件,分别是:JNativeCpp.dll,libJNativeCpp.so,JNative.jar 。 
      JNativeCpp.dll Windows下用的,拷贝到windows / system32目录下;
      libJNativeCpp.so Linux下的,拷贝到系统目录下;
      JNative.jar 这是一个扩展包,导入工程LIB中或将其拷贝到jdk\jre\lib\ext 下,系统会自动加载。

    • 使用说明

      我的项目将使用JNative组件调用一个测试应用服务器状态的TestAppSvr.dll文件,Dll文件中包含一个TestConnect()方法,返回一个整形的结果(1或0)

      首先配置好JNative组件的windows环境:
      将Native要用到JNativeCpp.dll放在系统盘的\WINDOWS\system32

      将JNative.jar导入工程中,新建一个调用类:

      java 代码
      1. package com.tvjody;   
      2.   
      3. import java.io.File;   
      4. import java.io.FileOutputStream;   
      5. import java.io.IOException;   
      6. import java.io.InputStream;   
      7.   
      8. import org.xvolks.jnative.JNative;   
      9. import org.xvolks.jnative.Type;   
      10. import org.xvolks.jnative.exceptions.NativeException;   
      11.   
      12. public class AppSvrTestConnect {   
      13.   
      14.     public AppSvrTestConnect() {   
      15.   
      16.     }   
      17.        
      18.     /**  
      19.      * 测试应用服务器连接状态  
      20.      *   
      21.      *  TestConnect   
      22.      * @param ip 应用服务器IP  
      23.      * @param port 端口  
      24.      * @param intrcpt  是否采用数据压缩方式 1 :true 0:false  
      25.      * @return int 1 :成功 0:失败  
      26.      * @throws NativeException  
      27.      * @throws IllegalAccessException  
      28.      */  
      29.     private static final int TestConnect(String ip, int port, int intrcpt)throws NativeException, IllegalAccessException {   
      30.         JNative n = null;   
      31.         try {              
      32.             n = new JNative("TestAppSvr.dll""TestConnect");   
      33.             n.setRetVal(Type.INT);   
      34.             int i = 0;   
      35.             n.setParameter(i++, Type.STRING, ip);   
      36.             n.setParameter(i++, Type.INT, "" + port);   
      37.             n.setParameter(i++, Type.INT, "" + intrcpt);   
      38.             n.invoke();   
      39.             return Integer.parseInt(n.getRetVal());   
      40.         } finally {   
      41.             if (n != null)   
      42.                 n.dispose();   
      43.         }   
      44.     }   
      45.     /**  
      46.      * 指定Dll文件路径,动态加载本地链接库,测试应用服务器连接状态  
      47.      * setDllPath  
      48.      * @param path Dll文件的路径,不包含DLL名称 例如:windows - d:\test\test\ unix - root/test/test/  
      49.      * @param ip 应用服务器IP  
      50.      * @param port 端口  
      51.      * @param intrcpt  是否采用数据压缩方式 1 :true 0:false  
      52.      * @return int 1 :成功 0:失败  
      53.      * @throws NativeException  
      54.      * @throws IllegalAccessException  
      55.      */  
      56.     public static final int TestConnectFromDllPath(String path,String ip, int port, int intrcpt) throws NativeException, IllegalAccessException{   
      57.         path += "TestAppSvr.dll";   
      58.         System.load(path);   
      59.         return TestConnect(ip,port,intrcpt);   
      60.     }   
      61.     /**  
      62.      * Dll文件放在JRE\bin目录下面,ClassLoader就能通过System.loadLibrary()动态加载本地链接库  
      63.      * TestConnectFromDllPath  
      64.      * @param ip 应用服务器IP  
      65.      * @param port 端口  
      66.      * @param intrcpt  是否采用数据压缩方式 1 :true 0:false  
      67.      * @return int 1 :成功 0:失败  
      68.      * @throws NativeException  
      69.      * @throws IllegalAccessException  
      70.      */  
      71.     public static final int TestConnectFromDllPath(String ip, int port, int intrcpt) throws NativeException, IllegalAccessException{   
      72.         System.loadLibrary("TestAppSvr");   
      73.         return TestConnect(ip,port,intrcpt);   
      74.     }   
      75. }  

      这个类实现了一个静态私有方法,用来调用Dll文件中的方法返回结果

      private static final int TestConnect(String ip, int port, int intrcpt)

      两个静态公共方法,分两种方式装载DLL文件

      public static final int TestConnectFromDllPath(String path,String ip, int port, int intrcpt)  //通过DLL文件的路径
      public static final int TestConnectFromDllPath(String ip, int port, int intrcpt) //通过ClassLoader

                 然后新建一个类,调用AppSvrTestConnect.java,实现方法一调用,我是将TestAppSvr.dll文件与Demo.java放在一个目录下 ,所以得到Demo.java的路径后就可以得到TestAppSvr.dll的路径,调用AppSvrTestConnect.TestConnectFromDllPath()方法后就能返回正确的信息.方法二是已经将TestAppSvr.dll放在了Jre\bin目录下,在JVM的Classloader的时候会自动加载,然后通过System.loadLibrary("TestAppSvr")就可以装配DLL文件.

    java 代码
    1. public class Demo {   
    2.     public int getInfo() throws NativeException, IllegalAccessException{   
    3.            
    4.         String path=getClass().getResource(File.separator).getPath();          
    5.         path = path.substring(1,path.length());   
    6.         System.out.println(path);   //得到DLL文件的路径   
    7.            
    8.         String ip = "192.168.0.48"//服务器IP   
    9.         int port = 221;             //端口   
    10.         int intrcpt = 1;            //数据压缩方式传送,1为采用;0为不采用   
    11.         //方法1 传入Dll文件的路径   
    12.         //int info = AppSvrTestConnect.TestConnectFromDllPath(path, ip, port, intrcpt);   
    13.            
    14.         //方法2 Dll文件已经放在JRE\bin目录下面   
    15.         int info = AppSvrTestConnect.TestConnectFromDllPath(ip, port, intrcpt);   
    16.            
    17.         //1为成功,0为失败   
    18.         if (info == 1)   
    19.             System.out.println("应用服务器可用。");   
    20.         else  
    21.             System.out.println("应用服务器不可用,请检查IP地址和端口是否正确。");   
    22.            
    23.         return info;   
    24.     }   
    25.       


     System.loadLibrary():装载Windows\System32下或jre\bin或Tomcat\bin目录下的本地链接库

    System.load():根据具体的目录来加截本地链接库,必须是绝对路径

     

    • 备注

      上面的示例工程,因为是例子,所以没有大多的设计,只是实现了装载DLL文件,调用DLL文件方法,返回信息.

      JNative的详细说明,请参考JNative的源程序和例子.

      注意JVM只允许一个默认的ClassLoader来load native library,同时并不提供专门的API来unload一个loaded native library,所以在项目调试的时候,独立启动Web Server.

    展开全文
  • 学习JNative

    2015-03-26 18:07:09
    由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下“Java dll”,首先出现的是Jnative,于是决定用它,后来也试了些别的,但还是JNative好使,...
    由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下“Java dll”,首先出现的是Jnative,于是决定用它,后来也试了些别的,但还是JNative好使,简单总结如下: 

    Java调用动态库所需要关心的问题: 
    l         如何装载dll文件,以及如何定位所要使用的方法; 

    l         数据类型是如何对应的; 

    l         如何给使用的方法传递参数; 

    l         如何获取返回的值。 

    JNative INFO: 
    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/ 

    Version:1.3 

    一个开源的组件,通过它调用已有动态库中的方法就非常的方便,支持CallBack 。 

    为什么选择JNative 
    同类的开源组件相对活跃的还有,JNA ( Java Native Access ), Jawin,Nativecall,etc.但是Jnative 相对更容易使用,它对数据类型的处理做的更好。 

    l         JNA 需要用户对所使用的DLL文件事先进行封装,才能装载。另外需要在一个java接口中描述目标DLL中的函数与结构,从而使JNA自动实现Java接口到native function的映射,较麻烦。 

    l         Nativecall 暂时还不知道如何装载dll文件。 

    l         Jawin 数据类型匹配相当敏感,它采用一种叫做”instruction string”的格式来传递参数,还没有完全理解。 

    How to: 
    解压JNative-1.3.2.zip 获得三个文件,分别是:JNativeCpp.dll,libJNativeCpp.so,JNative.jar 。 


    JNativeCpp.dll Windows下用的,拷到windows / system32目录下; 

    libJNativeCpp.so Linux下的咚咚; 

    JNative.jar 这是一个扩展包,将其copy到C:\jdk\jre\lib\ext 下(我的目录结构),系统会自动加载。 

    结构映射(Structure Mapping) 




    Type 
    Length 
    JNative class 

    DWORD 

    org.xvolks.jnative.misc.basicStructures.LONG 

    HWND 

    org.xvolks.jnative.misc.basicStructures.HWND 

    COLORREF 

    org.xvolks.jnative.misc.basicStructures.LONG 

    COLORREF* 

    org.xvolks.jnative.pointers.Pointer 

    LPARAM 

    org.xvolks.jnative.misc.basicStructures.LPARAM 

    LPCCHOOKPROC 

    org.xvolks.jnative.util.Callback 

    LPCTSTR 

    org.xvolks.jnative.pointers.Pointer 











    一些关键的类及方法 

    Class 
    作用 
    一般用到的方法(参数略,参考Doc) 

    org.xvolks.jnative.Jnative 
    装载dll文件,定位函数 
    JNative(),setParameter(),setRetVal(),getRetVal() etc. 

    org.xvolks.jnative.pointers.Pointer 
    替代本地函数中的的指针,需要先申请一块内存空间,才能创建 
    Pointer(),dispose() 

    org.xvolks.jnative.pointers.memory.MemoryBlockFactory 
    申请一块内存空间 
    createMemoryBlock() 

    org.xvolks.jnative.exceptions.NativeException 
    抛出装载,定位等方面的异常 


    org.xvolks.jnative.Type 
    列举和管理Jnative需要的不同的数据类型 




    (二) 

    简单测试,Javadoc 下和官方网上有些例子,下面的是我随便从IC读卡程序中找了个DLL进行的测试: 
    SCReader.dll 下的SCHelp_HexStringToBytes()函数原型 
    SCREADER_API WINAPI long SCHelp_HexStringToBytes( 

    LPCTSTR pSrc, 

    BYTE* pTar, 

    int MaxCount 

    ); 

    注意:dll文件需要放到System32下,否则可能找不到 



    通过Jnative 用java 来调用代码如下: 

    package onlyfun.dllcall; 
    import org.xvolks.jnative.JNative; 
    import org.xvolks.jnative.exceptions.NativeException; 
    import org.xvolks.jnative.pointers.Pointer; 
    import org.xvolks.jnative.pointers.memory.MemoryBlockFactory; 
    import org.xvolks.jnative.Type; 
    public class UserCall { 
        /** 
        * return 转换成功的字节数 
        */ 
        static JNative Something = null; 
        static Pointer pointer; 
        public String getSomething(String pSrc, Pointer pTar, int MaxCount) throws NativeException, IllegalAccessException{ 
          
           try{ 
               if(Something == null){ 
                  pTar = new Pointer(MemoryBlockFactory.createMemoryBlock(36)); 
                  Something = new JNative("SCReader.DLL", "SCHelp_HexStringToBytes"); 
    // 利用org.xvolks.jnative.JNative 来装载 SCReader.dll,并利用其SCHelp_HexStringToBytes方法 
                  Something.setRetVal(Type.INT); 
    // 指定返回参数的类型 
               } 
               int i=0; 
               Something.setParameter(i++,pSrc); 
               Something.setParameter(i++,pTar); 
               Something.setParameter(i++,MaxCount); 
               System.out.println("调用的DLL文件名为:"+Something.getDLLName()); 
               System.out.println("调用的方法名为:"+Something.getFunctionName()); 
    //传值 
               Something.invoke();//调用方法 
               return Something.getRetVal(); 
           }finally{ 
               if(Something!=null){ 
                  Something.dispose();//释放 
               } 
           } 
        } 
        public Pointer creatPointer() throws NativeException{ 
           pointer = new Pointer(MemoryBlockFactory.createMemoryBlock(36)); 
           pointer.setIntAt(0, 36); 
           return pointer; 
        } 

        public static void main(String[] args) throws NativeException, IllegalAccessException { 
           UserCall uc = new UserCall(); 
           String result = uc.getSomething("0FFFFF", uc.creatPointer(), 100); 
           System.err.println("转换成功的字节数为:"+result); 
           TestCallback.runIt(); 
        } 

    http://ejb-wawa.iteye.com/blog/188662 转载地址


    展开全文
  • 由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下 “Java dll”,首先出现的是Jnative,于是决定用它,后来也试了些别的,但还是JNative好使,...
  • 1)、JNative(JNative.jar、JNativeCpp.dll) 2)、博思得dll文件(CDFPSK.dll)和API文档 import org.xvolks.jnative.JNative; import org.xvolks.jnative.Type; import org.xvolks.jnative.exceptions.Native...
  • J2EE引擎出现java.lang.UnsatisfiedLinkError: CC错误的原因(2008-03-04 11:03:29) ...标签:报表软件 报表工具 web报表 软件 下载 it 如意报表  ...运行JSP报表程序页面出现java.lang....
  • Java 进程操作

    2016-12-15 17:20:11
    http://download.csdn.net/tag/JNative.jar 对qq进行操作 import org.xvolks.jnative.exceptions.NativeException; import org.xvolks.jnative.misc.basicStructures.HWND; import org.xvolks.jnative
  • 使用JNative对条码打印机进行打印 因项目需要,对Godex EZ2300条码机进行调用打印, 驱动为Ez2000.dll, 用JNI可以实现调用,但比较麻烦, 需 ...2. 解压出来后有JNative.jar / JNativeCpp....
  • 要在Java中调用Windows API,最简单的方法就是使用JNative.jar中提供的接口。该库已经对Linux和Windows系统中的API进行了封装, 例如对Windows,使用它里面的接口调用就和在Delphi等开发工具中的调用方法是一样的,...
  • 使用JNative调用dll方法, dll 文件名为 : IMLib.dll、MTLib.dll、MT_PlaneLib.dll、InfraredSDK.dll。   这些dll之间有相互依赖关系。...使用到的 jar 包是 : JNative.jar 见附件   1. C++接口及其描...
  • jna和jnative的一个简单示例工程,包含jna和jnativejar包,还有jna的chm api文档以供参考。其中.dll是的函数是求两个数的较大值。这是我初入学习java访问.dll做的一个示例。
  • 最近一个 Java 项目需要调用公司的读卡器读取卡号... 本来 C 开发测试时用了 JNative.jar 来调用 DLL,但是网路上的 JNative.jar 都是基于 32 位系统,其 jar 包中的两个 DLL 也均为 32 位。  在我本地尝试时都报...
  • JNative.jar(下载地址) 2、使用方式:向QQ输入文本为例 public class QQTest { public static void main(String[] args) { // 第一个参数是Windows窗体的窗体类,第二个参数是窗体的标题。 HWND hwnd
  • • 下截JNative组件 jnative.sourceforge.net/ 到这里下载JNative开源...获得三个文件,分别是:JNativeCpp.dll,libJNativeCpp.so,JNative.jar 。 JNativeCpp.dll Windows下用的,拷贝到windows / system32目录
  • 由于项目要求,需要用Java调用windows的dll文件,查了一下,如果用JNI的话是比较麻烦的,在sourceforge.net上搜索了一下 “Java dll”,首先出现的是Jnative,于是决定用它,后来也试了些别的,但还是JNative好使,...
1 2 3 4 5 ... 7
收藏数 127
精华内容 50
关键字:

.jar里的api jnative