【问题标题】:How to exit the windows command prompt in which a java application got started如何退出启动 java 应用程序的 windows 命令提示符
【发布时间】:2012-08-24 14:21:33
【问题描述】:

简单Java程序的控制台显示错误信息后如何退出?

目前我的代码有:

...
...
if (some condition){
//print error
System.exit();
...
...

但是这个System.exit(); 让控制台保持打开状态。我也试过exit(0);System.exit(0);

【问题讨论】:

  • 在什么方面没有帮助?当你运行 System.exit() 时会发生什么?
  • 它应该可以解决问题。因此,要么您从未实际执行 System.exit,要么您正在执行代码中不存在的相关操作。请创建一个尽可能小的示例,您可以在此处发布完整代码,或者至少告诉我们更多关于您的应用在做什么的信息。
  • @Jens Schauder:这是我在 Windows cmd 上执行的简单 Java 程序。我希望 cmd 在显示特定错误消息后自动关闭。
  • 等一下 - 你想关闭命令提示符窗口还是退出你的程序?我认为条件受到影响,您正在打印错误好吗?
  • @Edd:是的。只有错误被打印出来。打印错误后如何自动关闭cmd.exe?

标签: java console cmd


【解决方案1】:

如果您想关闭正在运行您的应用程序的命令提示符窗口,那么我认为没有办法做到这一点(至少不是很好)。

为什么要从命令提示符启动应用程序,然后关闭预先存在的命令提示符窗口?这肯定会消除您正在输出的错误消息(除非它也被记录 - 在这种情况下,为什么要将它打印到您要关闭的窗口?)。

这是特定于 Windows 的,但会在 Windows 资源管理器中创建指向 java -jar MyJarFile.jarjava MyCompiledClass 的快捷方式吗?这种方法的说明可以在here找到。

【讨论】:

  • 好的。所以,我终于可以停止在博客和谷歌上搜索了。谢谢。
  • 问题是你不想退出你的程序。您想杀死程序运行所在的环境。
【解决方案2】:

System.exit(1);

应该可以正常工作。请注意,如果您因错误退出,您通常会设置一个 非零 退出代码。来自the doc

参数用作状态码;按照惯例,非零状态 code表示异常终止。

这意味着您可以使用通用约定编写脚本,生成您的程序的任何进程都可以做出相应的反应等。

【讨论】:

  • 这是一个简单的 Java 程序,我在 Windows cmd 上执行。我希望 cmd 在显示特定错误消息后自动关闭
【解决方案3】:

如果我对您的理解正确,您想在命令提示符下运行您的程序,如果程序失败,您希望它显示错误消息,关闭程序和逗号提示符窗口?

如果是这种情况,那么我唯一能想到的就是在批处理文件中运行程序,检查程序的退出状态。所以在你的代码中写下你的错误信息,然后我建议睡眠几秒钟,这样用户就可以真正看到它,然后退出状态码 1.e.g.

if(SomeCondition){
  System.err.println("ERROR MESSAGE...");
  Thread.sleep(3000);//Sleep for 3 seconds... 
  System.exit(1);
}

然后从检查“ERRORLEVEL”环境变量的批处理文件运行您的程序,例如

java <INSERT_PROGRAM_NAME>
IF %ERRORLEVEL% == 1 exit

希望这会有所帮助:)

【讨论】:

    【解决方案4】:

    java.lang.System 没有没有参数的exit 方法,所以System.exit(); 将是一个编译错误。 (不过,System.exit(1); 没问题。)您的代码无法正常工作的原因可能是您没有重新编译它,因此您仍在运行添加该行之前的一些旧版本。

    【讨论】:

      【解决方案5】:

      假设您正在尝试从 java 安装 firefox .bat 文件

      public static void main(String[] args) throws InterruptedException {
          try {
              String[] command = { "cmd.exe", "/C", "Start", "C:\\firefox.bat" };
              Runtime.getRuntime().exec(command).waitFor();
          } 
          catch (Exception e) 
          {
              System.out.println("Execution error");
          }
      }
      

      这将触发命令提示符并打开窗口,直到您在安装 firefox 后手动关闭它。

      解决方法是,在您的 .bat 文件中,在您的命令之后只需放置一个“exit”例如:

      您的 firefox.bat 将包含

      @Start /wait "Firefox" "C:\Firefox Setup 41.0.exe" -ms

      退出

      这将关闭您的命令提示符窗口。希望这会有所帮助...

      【讨论】:

        【解决方案6】:

        看看下面的链接

        http://www.cs.bris.ac.uk/jot/decisions/exercise11/exit.html

        程序必须返回退出代码的一般约定。退出代码应为零表示成功,非零表示失败。平台对不同的非零代码的含义有所不同,因此程序员通常只返回 1 作为失败的一般指示。

        【讨论】:

          【解决方案7】:

          System.exit();终止 JVM。 int 是状态码(0 表示“正常”退出)。如果它没有退出,那是因为您的那部分代码无法访问并且根本没有被执行。

          Java API - System.exit()

          【讨论】:

          • 这是一个简单的 Java 程序,我在 Windows cmd 上执行。我希望 cmd 在显示特定错误消息后自动关闭
          猜你喜欢
          • 2018-02-22
          • 2013-04-01
          • 2012-07-05
          • 2011-09-23
          • 1970-01-01
          • 2016-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多