public static void main(String[] args) {
try {
String line;
Process p = Runtime.getRuntime().exec("calc.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(p
.getInputStream()));
line = input.readLine();
input.close();
} catch (Exception err) {
err.printStackTrace();
}
}执行这段程序可以打开系统的计数器,但是 打开计算器以后,这个main方法没有结束,程序还是始终的运行状态(eclipse控制台的小红灯一直是亮的),只有当关闭了计算器以后,main方法才能结束(eclipse控制台的小红灯才熄灭)。
我想问,如何做,能够实现,调用这个方法后,启动了计算器。但启动计算器以后,在不关闭计算器的情况下,退出main方法,结束这个程序,而计算机还是打开状态
(我在程序里添加了System.exit(0),也不好使,程序不结束,始终在等待关闭计算机以后,才结束)谢谢了~~~~~-----另问:如果执行一个 bat 程序,不写 line = input.readLine(); 这句话,bat 就不执行,只有写了这句才执行(bat的内容是启动tomcat),请问,这又是什么原因啊????

解决方案 »

  1.   

    就算重新启动一个线程,你用System.exit的话,要么就是关不掉,要么就是calc根本就不启动。
    我觉得System是否exit不重要吧,如果不想看到那个黑框的话,start javaw就行了嘛。
    至于readLine,我觉得可能和jre版本有关系,反正在我这里,不存在你说的这个问题。
      

  2.   

    其实 我只是想写个[控制程序],控制,tomcat启动。
    但我现在用上面的方法写好后,tomcat是启动了,但是[控制程序]不结束。只有当我关闭tomcat后,[控制程序]才能结束。如何修改代码,才能实现,tomcat启动了,而且 控制程序正常退出?
      

  3.   

    你调用的计算器程序,我觉得无论如何是不能够让JVM开启了新的进程之后再关闭JVM的。
    JVM有相关的类对象来监听和维护新开启的进程,如果JVM关闭,新的进程会被关联关闭,至少calc是这样的。
    可以确定的是,即便开启一个线程,也不能做到这样的效果。
      

  4.   

    public static void main(final String[] args) throws java.io.IOException {
        java.awt.Desktop.getDesktop().open(new java.io.File("/opt/local/bin/sqlitestudio"));
    }