2014-09-05 128 views
0

它可以打包的.exe文件的Java罐內和這個jar添加到項目中展開組件比使用運行此exe .EXE:運行通過使用應用程序服務器的

Runtime.getRuntime().exec(); 我試圖運行這個exe文件後,通過使用類加載器得到它在glassfish域中的路徑,但實際上這個exe文件被封裝在jar文件中,防止windows執行它。

回答

1

你將不得不從罐子第一解壓:

FileOutputStream fos=null; 
    InputStream is = null; 
    try 
    { 

     is = this.getClass().getResourceAsStream("path to your exe inside the jar"); 
     fos = new FileOutputStream("destination path on host file system"); 
     byte[] buffer = new byte[1024]; 
     int read; 
     while ((read = is.read(buffer)) > -1) 
      fos.write(buffer, 0, read); 

    } 
    finally 
    { 

     if (is != null) 
      is.close(); 
     if (fos != null) 
      fos.close(); 
    } 

然後,Runtime.getRuntime().exec()主機文件系統上運行它。

+0

提取是開銷,因爲它包含大量相關的dll和資源。我更喜歡將exe和相關的dll添加到項目中(不使用jar)而不是提取它。 – 2014-09-05 17:00:49

相關問題