【问题标题】:Eclipse RCP application is not setting the ERRORLEVEL upon System.exit()Eclipse RCP 应用程序未在 System.exit() 上设置 ERRORLEVEL
【发布时间】:2015-07-31 08:55:49
【问题描述】:

当尝试从 bat 脚本调用 Eclipse RCP 应用程序时,如果 Eclipse 异常终止,那么我们将以 System.exit(10) 退出 RCP 应用程序。当我尝试从脚本执行 echo %ERRORLEVEL% 时,它显示的是 0 而不是 10。

而如果我对普通的 Java 应用程序做同样的事情(比如借助 JAR 文件),那么它的日志记录为 10。

知道为什么 Eclipse RCP 拒绝设置 ERRORLEVEL 吗?

【问题讨论】:

  • 在 RCP 退出后,是否有任何包装脚本可能会通过运行某些东西来吞噬ERRORLEVEL
  • 请编辑您的问题以包含您的相关源代码以运行此应用程序并获取其错误级别。
  • 您不应该使用 System.exit() 以错误级别退出 RCP 应用程序,而是使用 IApplication.start() 的返回值。什么样的问题让你想使用 System.exit() 关闭?
  • @McMonster:感谢您的及时回复!!,我的 bat 脚本在其自身中调用 RCP 应用程序。如果在我的 RCP 执行过程中观察到任何错误,那么我们将以错误代码的形式进行标记(例如 5、6 等,用于各种目的),并且调用 bat 脚本应该知道这个退出值。如果我尝试像 echo %ERRORLEVEL% 一样记录 ERRORLEVEL,则脚本始终打印为 0。 注意:如果我通过脚本调用 NORMAL JAVA APPLICATION,则行为正常。即,通过调用脚本显示的 JAVA APPLICATION 设置的任何 ERRORLEVEL 都相同
  • @Kenster:对我之前的评论有什么想法吗??

标签: java eclipse eclipse-rcp rcp errorlevel


【解决方案1】:

正如@McMonster 所建议的,从 IApplication start() 方法返回一个 Boxed Integer 可以正常工作。以前我从命令提示符尝试过,我想知道它总是为我返回一个默认的“0”。而如果我通过 BAT 脚本运行相同的脚本,那么它可以正常工作。

非常感谢 McMonster 和 Stack Overflow!

【讨论】:

    【解决方案2】:

    提供退出代码的正确方法是将其传播到 IApplication.start() 的实现中。它应该以您想要的错误代码的形式返回到 Integer 中。

    【讨论】:

    • McMonster:哦……谢谢你的回答。您能否借助一些插图来支持您的上述答案,以便我可以确定我在做什么。
    • 这取决于你的应用程序是如何工作的,基本上你在哪里使用 System.exit() 现在你必须返回值或以任何其他方式将它传递回你的应用程序开始的地方(IApplication.start( ))。没有看到代码就不能更具体了。
    • 我认为即使这样,Eclipse 原生启动器代码也仅支持退出代码 0 和两个重新启动代码。如果我正确阅读了源代码,其他所有内容都被视为 0 (git.eclipse.org/c/equinox/rt.equinox.framework.git/tree/…)
    • public Object start(IApplicationContext context) throws Exception { return new Integer(10);我试着给出这个并观察到我得到了一个异常说明如下:Java 已启动但返回退出代码 = 10,此后如果我回显 %ERRORLEVEL%,我总是得到 0
    • @greg-449 :感谢您的回复。这意味着无法从 Eclipse RCP 应用程序中设置 ERRORLEVEL ??
    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 2015-08-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    相关资源
    最近更新 更多