国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
java調(diào)用dll動(dòng)態(tài)庫文件的一般總結(jié)

  前一段時(shí)間,在項(xiàng)目需求中,需要調(diào)用一下第三方的動(dòng)態(tài)庫文件,下面是本人一些嘗試的經(jīng)歷。

  首先需要明白的是,在java中是不能直接調(diào)用動(dòng)態(tài)庫文件的,因?yàn)閯?dòng)態(tài)庫文件是使用c或是c++編寫的,作為一種跨     平臺(tái)的編程語言,java提供了一些用來讀取dll文件方法,

  一種是直接用JNI,這種方法一般來說用的人比較少,因?yàn)槠渲猩婕暗絚++調(diào)用文件的編寫,這里就不再敘述,下面直接說我們java程序員常用的兩種調(diào)用動(dòng)態(tài)庫的方法

   1.Jna調(diào)用動(dòng)態(tài)庫,

    JNA(Java Native Access )提供一組Java工具類用于在運(yùn)行期動(dòng)態(tài)訪問系統(tǒng)本地庫(native library:如Window的dll)而不需要編寫任何Native/JNI代碼。開發(fā)人員只要在一個(gè)java接口中描述目標(biāo)native library的函數(shù)與結(jié)構(gòu),JNA將自動(dòng)實(shí)現(xiàn)Java接口到native function的映射。

   使用步驟:

     (1):調(diào)入jar包,使用Jna之前我們需要在項(xiàng)目中首先導(dǎo)入Jna的jar包,有兩個(gè),jna-3.3.0-platform.jar 和 jna.jar

     (2):將需要調(diào)用的第三方dll文件放在項(xiàng)目的根目錄下

     (3):編寫調(diào)用的方法

        import com.sun.jna.Native;
        import com.sun.jna.win32.StdCallLibrary;
        public class HelloWorld {
    public interface Dll extends StdCallLibrary { 

 
            Dll INSTANCE = (Dll) Native.loadLibrary("SiInterface", Dll.class);//加載動(dòng)態(tài)庫文件


            public int INIT();//動(dòng)態(tài)庫中調(diào)用的方法
       }
    public static void main(String[] args) {
System.out.println(Dll.INSTANCE.INIT());
      }
      }

     需要注意:當(dāng)dll文件不在項(xiàng)目的根目錄下,路徑要寫成絕對路徑

    2.Jnative調(diào)用動(dòng)態(tài)庫

     使用步驟:

    (1):首先下載JNative的jar包,其中包含JNative.jar, JNativeCpp.dll, libJNativeCpp.so這三個(gè)包。

            JNative.jar是需要導(dǎo)入到Java工程的lib下。 通過Build Path即可導(dǎo)入。 建議將JNative.jar放在jdk的jre\lib\ext文             件里。

           JNativeCpp.dll是必須放入到j(luò)dk的jre\bin文件里,否則就會(huì)報(bào)JNative找不到的錯(cuò)誤。

            libJNativeCpp.so是Linux操作系統(tǒng)的,由于沒有做過實(shí)驗(yàn),所以暫時(shí)不予說明。

   (2):由于  JNativeCpp.dll是32為windows程序,所以需要下載jdk 32位的版本才可以。這一點(diǎn)要注意了

   (3):將需要調(diào)用的dll動(dòng)態(tài)鏈接庫放置到system32文件里,否則就會(huì)出現(xiàn)找不到dll文件的錯(cuò)誤。

   (4):下面是代碼部分

     import java.io.IOException;
     import java.io.PrintWriter;
     import javax.servlet.ServletException;
     import javax.servlet.http.HttpServlet;
     import javax.servlet.http.HttpServletRequest;
     import javax.servlet.http.HttpServletResponse;
     import org.xvolks.jnative.JNative;
     import org.xvolks.jnative.Type;
     import org.xvolks.jnative.exceptions.NativeException;
     public class testServlet extends HttpServlet {
  static JNative jnt = null; 
  public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
try {
String  filePath =request.getSession().getServletContext().getRealPath("/");  
                //下面用的是文件的絕對路徑
              System.load("D:\\myeclipse\\JnaWeb\\WebRoot\\jna\\SiInterface.dll");
         if (jnt == null) {  
             // 1.利用org.xvolks.jnative.JNative來加載DLL:參數(shù)1.類名  
             // 2.方法名  
             jnt = new JNative("SiInterface.dll", "INIT");  
             jnt.setParameter(0, "error");
             // 3.設(shè)置返回參數(shù)的類型  
             jnt.setRetVal(Type.INT);  
             // 4.執(zhí)行方法  
             jnt.invoke();// 調(diào)用方法  
         } 
         // 5.返回值  
         String string=jnt.getRetVal(); 
         System.out.println("string="+string);
     } catch (NativeException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} finally {  
         if (jnt != null) {  
             // 6.釋放系統(tǒng)資源  
             try {
jnt.dispose();
} catch (NativeException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}  
         }  
     } 
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}


   

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java調(diào)用底層的幾種方法
Java中調(diào)用dll動(dòng)態(tài)庫的簡潔方法
學(xué)習(xí)JNative
幾種java調(diào)用dll的方式
Java 使用 Tess4J 進(jìn)行 圖片文字識(shí)別 筆記
Java Native Access (轉(zhuǎn))
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服