applet引用jar中的dll檔案

來源:互聯網
上載者:User

把一個開源項目ocf打成jar包後,想把它作為applet外掛程式運行於瀏覽器,但打成的jar要引用一個dll檔案,而applet又不能訪問伺服器資源,所以就在ocf工程中加上了一段在本機建立dll檔案的程式,但ocf中引用dll檔案的對象為靜態對象,所以把建立的檔案也命名成靜態,否則運行時會出現檔案被其他程式佔用的異常。

主要代碼如下:

 static FileOutputStream fos = null;
  static DataOutputStream dos = null;
  static File file=null;

static public void loadLib() {
    try {

          byte[] buf = new byte[2048];
  file = new File("d:/ocfpcsc2.dll");
  if(file.exists()==false){

 file.createNewFile();
   fos = new FileOutputStream(file);
   dos = new DataOutputStream(fos);
   InputStream in = OCFPCSC1.class.getResourceAsStream("ocfpcsc1.dll");
   DataInputStream  dis = new DataInputStream(new BufferedInputStream(in));

while(dis.read(buf)!=-1){
    dos.write(buf,0,buf.length);
   }
   in.close();
   fos.flush();
   fos.close();
   dos.flush();
   dos.close();

opencard.core.util.SystemAccess.getSystemAccess().loadLibrary("d:/ocfpcsc2.dll");

  } catch (Exception e) {
      e.printStackTrace();
    }
  }

 

SystemAccess.java

 public static SystemAccess getSystemAccess() {
    SystemAccess sys = _registeredSystems.get(Thread.currentThread());
    if (sys==null)
      return _theSystem;
    else return sys; 
  }

/**
 * Link to a native DLL.
 */
  public void loadLibrary(String libName) {
    //System.out.println("using SystemAccess.loadLibrary()");
   //System.loadLibrary(libName);
  
  System.load(libName);
  }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.