2012-05-24 32 views
0

我已經編寫了一個應該打開另一個程序(這是一個.jar文件)的Java程序。如果我在主類我的程序中使用此代碼,一切工作正常:Java如何從代碼中運行另一個.jar程序來響應按鈕點擊

File logFile = new File("./ePaymentUpdater.jar"); 
Desktop.getDesktop().open(logFile.getCanonicalFile()); 
//or 
Runtime.getRuntime().exec("java -jar ePaymentUpdater.jar"); 

但如果我貼在事件相同的代碼在響應用戶點擊一個按鈕,它並沒有因爲它的工作應該: 該程序似乎運行,因爲它創建一個文件夾應該是(這個代碼是在被調用的程序的主類),但它不顯示它應該的jFrame

看來,我不能從另一個程序的框架內打開框架...

這是我的主類:

package prove_idiote; 
import java.awt.Desktop; 
import java.io.File; 
import javax.swing.JOptionPane; 

public class Main { 

    public static void main(String[] args) { 

//  try { 
//   Runtime.getRuntime().exec("java -jar ePaymentUpdater.jar"); 
//  } catch (Exception e) {    
//   System.out.println(e); 
//  } 

     Tester tester = new Tester(); 
     tester.setVisible(true);  
    } 
} 

這是我的按鈕事件:

private void ExecuteActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 

     JOptionPane.showMessageDialog(null, "before" ,"ATTENZIONE!",JOptionPane.WARNING_MESSAGE); 

     Runtime.getRuntime().exec("java -jar ePaymentUpdater.jar"); 

     JOptionPane.showMessageDialog(null, "after" ,"ATTENZIONE!",JOptionPane.WARNING_MESSAGE); 

    } catch (Exception e) {    
     System.out.println(e); 
    } 
} 
+0

定義「不起作用」!在事件處理程序中執行該代碼時會發生什麼?任何錯誤/消息? –

+0

Desktop.open()使用windows文件關聯來打開和執行程序。如果他們沒有正確設置它不會工作。 ePaymentUpdater.jar是否帶有主類集的MANIFEST.MF文件? – Stephan

+0

沒有錯誤消息,它似乎只是調用的.jar文件不運行 PS:我現在看到.jar運行,因爲它創建一個文件夾,因爲它應該是,但它不顯示它應該(一個jForm) – Maik

回答

1

我終於找到了問題(和解決方案) 被調用的.jar中有一些缺失的庫(我把兩個罐子放在同一個文件夾中,所以他們共享相同的庫,但其中一個是使用缺少的庫)

Thnaks提示

0
Runtime.getRuntime().exec("java -jar yourjarfile") 
+1

我也試過這條路,但是結果是一樣的: 如果在主體中啓動,則不起作用,如果啓動時響應按鈕單擊 – Maik

3

可以使用Runtime類的Java,並從那裏處理您的罐子如下:

Runtime.getRuntime().exec("java -jar ./ePaymentUpdater.jar") 

Runtime手柄運行時的所有進程並逐個執行它們。

相關問題