我想在JPanel中按JButton打开JAR文件。为了实现这个目标,我在ActionLilder里面使用了ActionListener。这是我的代码:
myButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ProcessBuilder pb = new ProcessBuilder("java", "-jar"
, "f:/Documents/TBot/topbotclient.jar"
, "-n", getTopBotName().getText()
, "-pw", getTopBotPass().getText()
, "-s", getScript_name().getText()
, "-w", getWorld().getText()
);
try {
Process p = pb.start();
} catch (IOException ee) {
ee.printStackTrace();
}
}
});
问题是打开的JAR文件无法正常工作 - 按下它的某些按钮后会冻结。但是,如果我关闭用于打开外部JAR的初始JAVA窗口,JAR文件将再次起作用。怎样做才能让初始窗口和打开的JAR文件窗口都正常运行?
我没有通过搜索找到任何解决方案: Run a jar File from java program, Execute .jar file from a Java program等。
更新:
我尝试不使用ProcessBuilder并使用" runtime.exec"代替。
try {
Runtime runtime = Runtime.getRuntime();
runtime.exec(" java -jar f:/Documents/TBot/scripts/topbot.jar -n Fataho -pw diehard15 -s scriptjoiner -w 301 -nort -a b@hadas.lt -apw blood444");
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Exception occured" + ex);
}
问题依然存在。
答案 0 :(得分:0)
尝试在单独的线程中启动一个进程构建器,以便主线程不会阻塞。从您的代码中,您可以在主线程中执行所有操作。利用swingWorker类的东西在一个单独的线程中启动操作。