亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java調用.dll文件的方法

2019-11-26 16:12:48
字體:
來源:轉載
供稿:網友

下截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 代碼

復制代碼 代碼如下:

package com.tvjody;  

import java.io.File;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  

import org.xvolks.jnative.JNative;  
import org.xvolks.jnative.Type;  
import org.xvolks.jnative.exceptions.NativeException;  

public class AppSvrTestConnect {  

    public AppSvrTestConnect() {  

    }  

    /** 
     * 測試應用服務器連接狀態 
     *  
     *  TestConnect  
     * @param ip 應用服務器IP 
     * @param port 端口 
     * @param intrcpt  是否采用數據壓縮方式 1 :true 0:false 
     * @return int 1 :成功 0:失敗 
     * @throws NativeException 
     * @throws IllegalAccessException 
     */ 
    private static final int TestConnect(String ip, int port, int intrcpt)throws NativeException, IllegalAccessException {  
        JNative n = null;  
        try {             
            n = new JNative("TestAppSvr.dll", "TestConnect");  
            n.setRetVal(Type.INT);  
            int i = 0;  
            n.setParameter(i++, Type.STRING, ip);  
            n.setParameter(i++, Type.INT, "" + port);  
            n.setParameter(i++, Type.INT, "" + intrcpt);  
            n.invoke();  
            return Integer.parseInt(n.getRetVal());  
        } finally {  
            if (n != null)  
                n.dispose();  
        }  
    }  
    /** 
     * 指定Dll文件路徑,動態加載本地鏈接庫,測試應用服務器連接狀態 
     * setDllPath 
     * @param path Dll文件的路徑,不包含DLL名稱 例如:windows - d:/test/test/ unix - root/test/test/ 
     * @param ip 應用服務器IP 
     * @param port 端口 
     * @param intrcpt  是否采用數據壓縮方式 1 :true 0:false 
     * @return int 1 :成功 0:失敗 
     * @throws NativeException 
     * @throws IllegalAccessException 
     */ 
    public static final int TestConnectFromDllPath(String path,String ip, int port, int intrcpt) throws NativeException, IllegalAccessException{  
        path += "TestAppSvr.dll";  
        System.load(path);  
        return TestConnect(ip,port,intrcpt);  
    }  
    /** 
     * Dll文件放在JRE/bin目錄下面,ClassLoader就能通過System.loadLibrary()動態加載本地鏈接庫 
     * TestConnectFromDllPath 
     * @param ip 應用服務器IP 
     * @param port 端口 
     * @param intrcpt  是否采用數據壓縮方式 1 :true 0:false 
     * @return int 1 :成功 0:失敗 
     * @throws NativeException 
     * @throws IllegalAccessException 
     */ 
    public static final int TestConnectFromDllPath(String ip, int port, int intrcpt) throws NativeException, IllegalAccessException{  
        System.loadLibrary("TestAppSvr");  
        return TestConnect(ip,port,intrcpt);  
    }  
}

這個類實現了一個靜態私有方法,用來調用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 代碼

復制代碼 代碼如下:

public class Demo {  
    public int getInfo() throws NativeException, IllegalAccessException{  

        String path=getClass().getResource(File.separator).getPath();         
        path = path.substring(1,path.length());  
        System.out.println(path);   //得到DLL文件的路徑  

        String ip = "192.168.0.48"; //服務器IP  
        int port = 221;             //端口  
        int intrcpt = 1;            //數據壓縮方式傳送,1為采用;0為不采用  
        //方法1 傳入Dll文件的路徑  
        //int info = AppSvrTestConnect.TestConnectFromDllPath(path, ip, port, intrcpt);  

        //方法2 Dll文件已經放在JRE/bin目錄下面  
        int info = AppSvrTestConnect.TestConnectFromDllPath(ip, port, intrcpt);  

        //1為成功,0為失敗  
        if (info == 1)  
            System.out.println("應用服務器可用。");  
        else 
            System.out.println("應用服務器不可用,請檢查IP地址和端口是否正確。");  

        return info;  
    }  

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.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91在线观看免费网站| 国产99久久精品一区二区 夜夜躁日日躁| 成人欧美一区二区三区在线| 一本色道久久综合亚洲精品小说| 欧美亚洲日本网站| 日韩高清有码在线| 欧美日韩亚洲国产一区| 国产日韩欧美在线播放| 国产视频一区在线| 亚洲电影免费观看高清完整版| 在线观看欧美日韩国产| 亚洲精品国产精品乱码不99按摩| 国产精品成人在线| 精品国产成人av| 91精品国产自产在线老师啪| 午夜剧场成人观在线视频免费观看| 亚洲美女喷白浆| 精品亚洲一区二区三区在线观看| 色综合影院在线| 欧美中文字幕在线视频| 啪一啪鲁一鲁2019在线视频| 亚洲男人天堂视频| 欧美日韩在线第一页| 91精品视频在线| 欧美日韩午夜激情| 欧美日韩国产中文字幕| 久久精品久久久久| 久久精品99无色码中文字幕| 日韩欧美国产激情| 亚洲国产天堂久久国产91| 午夜精品免费视频| 国产精品一区二区3区| 国产成人97精品免费看片| 久久久成人精品视频| www.欧美三级电影.com| 国产成人涩涩涩视频在线观看| 97av在线视频| 26uuu国产精品视频| 亚洲欧美制服另类日韩| 亚洲男人第一网站| 91av视频在线免费观看| 国产精品久久久久久超碰| 国产精品亚洲欧美导航| 成人免费视频在线观看超级碰| 精品在线欧美视频| 日本精品视频在线播放| 91美女高潮出水| 色偷偷88888欧美精品久久久| 国产91精品黑色丝袜高跟鞋| 欧美色视频日本版| 亚洲成人xxx| 日韩精品在线电影| 成人免费观看49www在线观看| 欧美丰满少妇xxxxx| 日韩亚洲国产中文字幕| 欧美日韩电影在线观看| 精品久久久久久国产91| 中文字幕日韩高清| 亚洲精品丝袜日韩| 国产精品成人在线| 国产经典一区二区| 亚洲欧美一区二区三区情侣bbw| www国产亚洲精品久久网站| 精品五月天久久| 久久久久九九九九| 精品福利免费观看| 国产伦精品免费视频| 在线观看欧美www| 欧美日韩在线观看视频| 在线成人中文字幕| 国产精品久久久久av| 久久精品国产精品亚洲| 国产欧美精品在线播放| 久久久亚洲天堂| 国产精品私拍pans大尺度在线| 国产精品高潮呻吟久久av黑人| 亚洲激情免费观看| 久久久国产一区二区三区| 亚洲精品小视频在线观看| 一区国产精品视频| 国产精品精品视频一区二区三区| 久久久久国产精品免费| 精品亚洲aⅴ在线观看| 精品久久香蕉国产线看观看亚洲| 97成人精品区在线播放| 欧美超级乱淫片喷水| 欧美日韩国产综合视频在线观看中文| 亚洲999一在线观看www| 欧美日韩国产精品一区二区不卡中文| 免费不卡欧美自拍视频| 中文字幕国内精品| 日本乱人伦a精品| 久久影院在线观看| 最近中文字幕2019免费| 狠狠躁夜夜躁人人爽超碰91| 国产精品女视频| 亚洲国产91精品在线观看| 91在线高清视频| 色综合影院在线| 久久成人一区二区| 亚洲精品国精品久久99热| 欧美一级视频一区二区| 国产精品高精视频免费| 久久久亚洲影院| 国产成人鲁鲁免费视频a| www亚洲欧美| 亚洲电影在线观看| 国产精品精品视频| 欧美老女人性生活| 亚洲性生活视频在线观看| 久久久免费精品视频| 亚洲欧美日韩成人| 欧美一区二区色| 国产免费一区二区三区在线观看| 久久精品国产一区| 久久久精品久久久| 久久天天躁夜夜躁狠狠躁2022| 欧美超级免费视 在线| 亚洲欧洲一区二区三区久久| 久久乐国产精品| 国产亚洲欧洲在线| 日韩欧美中文免费| 国产精品99久久久久久人| 狠狠躁夜夜躁久久躁别揉| 久久久免费精品视频| 成人国产精品久久久久久亚洲| 亚洲国产成人精品一区二区| 日韩精品中文在线观看| 2019av中文字幕| 国产精品国产亚洲伊人久久| 成人美女免费网站视频| 欧美性猛交xxxx黑人猛交| 成人疯狂猛交xxx| 国产一区二区黄| 久久久爽爽爽美女图片| 国产一区二区精品丝袜| 欧美怡春院一区二区三区| 久久久这里只有精品视频| 国产精品一区二区三区免费视频| 成人国产精品免费视频| 欧美黑人性生活视频| 国产精品久久久久7777婷婷| 日韩精品视频免费专区在线播放| 久久久久久久久91| 亚洲jizzjizz日本少妇| 全色精品综合影院| 欧美精品在线播放| 久久久久成人精品| 日韩男女性生活视频| 九九热这里只有精品免费看| 欧美性20hd另类| 永久免费看mv网站入口亚洲| 午夜精品久久久久久久男人的天堂| 亚洲精品suv精品一区二区| 国产精品高潮呻吟久久av黑人| 国产在线观看91精品一区| 欧美精品videos性欧美| 久久久久亚洲精品| 日韩精品在线免费观看| 午夜精品久久久久久久白皮肤| 亚洲人成网在线播放| 日本午夜人人精品| 亚洲日本欧美日韩高观看| 国产成人a亚洲精品|