作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图使用在堆栈溢出中找到的 restartApplication 方法,但由于某种原因它只会重新启动我的应用程序一次。例如,在下面这个简单的 JOptionPane 程序中,如果用户输入字母“a”,它将重新启动程序。一旦程序重新启动,如果用户再次输入“a”,程序就会终止执行。如何让它不断地自行重启?
我添加了一些 println() 语句,看看是否可以获得更多信息,它只是确认了程序在我第二次输入字母“a”后立即结束。
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class JOptionTest{
public static void restartApplication()
{
final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
final File currentJar = new File("C:\\Documents and Settings\\My Documents\\hello3.jar");//UpdateReportElements.class.getProtectionDomain().getCodeSource().getLocation().toURI());
/* is it a jar file? */
if(!currentJar.getName().endsWith(".jar"))
return;
/* Build command: java -jar application.jar */
final ArrayList<String> command = new ArrayList<String>();
command.add(javaBin);
command.add("-jar");
command.add(currentJar.getPath());
final ProcessBuilder builder = new ProcessBuilder(command);
try {
builder.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.exit(0);
}
public static void main(String[] args){
String str = JOptionPane.showInputDialog(null, "Enter some text",1);
System.out.println(str);
//String a= "a";
if (str.equals("a")){
System.out.println(str+ "right about to restart");
restartApplication();
}
}
}
最佳答案
看到这一行了吗?
System.exit(0);
您正在调用 restartApplication 一次,当它结束时,您将退出 java 进程。
如果您想连续重新启动,请删除此行并可能永远迭代:
public static void restartApplication()
{
while(true){
final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
final File currentJar = new File("C:\\Documents and Settings\\XBBKKYL\\My Documents\\hello3.jar");//UpdateReportElements.class.getProtectionDomain().getCodeSource().get Location().toURI());
/* is it a jar file? */
if(!currentJar.getName().endsWith(".jar"))
return;
/* Build command: java -jar application.jar */
final ArrayList<String> command = new ArrayList<String>();
command.add(javaBin);
command.add("-jar");
command.add(currentJar.getPath());
final ProcessBuilder builder = new ProcessBuilder(command);
try {
builder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我还没有测试过,这只是一个想法
关于java restartApplication 方法只重启一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11906769/
我试图使用在堆栈溢出中找到的 restartApplication 方法,但由于某种原因它只会重新启动我的应用程序一次。例如,在下面这个简单的 JOptionPane 程序中,如果用户输入字母“a”,
我是一名优秀的程序员,十分优秀!