我编写了一个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 :(得分:3)
您可以使用java的Runtime类并从那里处理您的jar,如下所示:
Runtime.getRuntime().exec("java -jar ./ePaymentUpdater.jar")
Runtime
在运行时处理所有进程并逐个执行。
答案 1 :(得分:1)
我终于找到了问题(和解决方案) 调用.jar中有一些丢失的库(我把两个jar放在同一个文件夹中,所以他们共享相同的库,但其中一个使用了一个缺少的库)
暗示提示
答案 2 :(得分:0)
Runtime.getRuntime().exec("java -jar yourjarfile")