Java如何从代码中运行另一个.jar程序以响应按钮单击

时间:2012-05-24 10:12:10

标签: 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);
    }
} 

3 个答案:

答案 0 :(得分:3)

您可以使用java的Runtime类并从那里处理您的jar,如下所示:

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

Runtime在运行时处理所有进程并逐个执行。

答案 1 :(得分:1)

我终于找到了问题(和解决方案) 调用.jar中有一些丢失的库(我把两个jar放在同一个文件夹中,所以他们共享相同的库,但其中一个使用了一个缺少的库)

暗示提示

答案 2 :(得分:0)

Runtime.getRuntime().exec("java -jar yourjarfile")