如何重新启动Java控制台应用程序。
我想创建一个方法,在调用它时重启或重新启动控制台应用程序。你们能告诉我一些想法吗?
答案 0 :(得分:2)
我想不出用Java做的方法,你需要一些脚本帮助。您可以通过使用System.exit()完成JVM执行并使用调用程序的特殊值来重新启动,以了解是否需要重新启动而不是完成。所以在你的Java代码中你会有这样的东西:
public class Test {
public static final int RESTART_CODE = 100;
public static void main(String ... args) throws IOException {
// DO something...
restart();
}
static void restart() {
System.exit(RESTART_CODE);
}
}
然后一个脚本调用JVM(在这种情况下是一个Linux bash脚本,如果你使用的是Windows,你可以用* .bat文件做类似的事情)。 Tee脚本:
#!/bin/bash
java Test "$@"
[ $? == 100 ] && ./test.sh "$@"
那么您可以使用
调用您的程序java.sh _argument1_ _argument2_ ...
答案 1 :(得分:2)
您是否尝试过调用main(args)
传递String[] args
如果你真的想要restart()
方法,你可以做一些像
private void restart(String[] strArr)
{
main(strArr);
}
粗略的迷你示例
import java.io.*;
public class Test{
public static void main(String[] args)
{
try{
System.out.println("Type 'R' to restart");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
if(input.equals("R"))
restart(args);
else
System.out.println("You did not restart");
}
catch(Exception e)
{e.printStackTrace();}
}
private static void restart(String[] strArr)
{
System.out.println("You restarted");
main(strArr);
}
}
答案 2 :(得分:0)
理论上,您应该能够调用Runtime.exec()并传入命令来运行Java控制台应用程序。
为了预防,在调用Runtime.exec()之前,您应该保存所有数据或达到应用程序准备退出的状态。 由于Runtime.exec()将执行另一个控制台应用程序实例,新实例可能已加载所有数据。
成功调用Runtime.exec()后,现有的应用程序可以安静地消失。
让我知道是否可以这样做,因为我关心的是当现有应用程序退出时是否会终止新实例。