0

我编写了一个 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);
    }
} 
4

3 回答 3

3

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

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

WhereRuntime在运行时处理所有进程并一一执行。

于 2012-05-24T10:22:47.117 回答
1

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

感谢提示

于 2012-05-25T10:49:23.513 回答
0
Runtime.getRuntime().exec("java -jar yourjarfile")
于 2012-05-24T10:15:23.970 回答