【问题标题】:How do set the error code (ErrorLevel) for an Eclipse RCP application如何为 Eclipse RCP 应用程序设置错误代码 (ErrorLevel)
【发布时间】:2015-05-19 10:36:19
【问题描述】:

我们正在通过 shell 脚本调用一个 Eclipse RCP 应用程序。如果 Eclipse RCP 应用程序异常退出,则 ErrorLevel 设置不正确,导致 shell 无法识别 Eclipse RCP 应用程序的返回码。

关于如何通过 Eclipse RCP 应用程序设置 %ErroLevel% 的任何想法??

【问题讨论】:

  • 对不起..实际上它不是 Java 应用程序,而是 Eclipse 应用程序。如果我设置 System.exit(value),则从 Eclipse 应用程序中。当我执行 echo %ERRORLEVEL% 时不显示此值
  • 看看这个:stackoverflow.com/questions/6298705/…。请注意,Runtime.getRuntime().exit(5) 等于 System.exit(5)
  • @BtcSources: 是的,System.exit(value) 和 Runtime.getRuntime().exit(5) 都是相似的,在 Eclipse RCP 应用程序中给出这些之后,我仍然得到 0 作为ERROLEVEL
  • 如果我在某处错了,请纠正我.....
  • 使用断点检查您的程序是否在这行代码内结束。如果是这样会很奇怪,但ERRORLEVEL 不会改变。用两张图片更新答案,该行中的断点在运行时停止,以及<terminated, exit value: 10> pic。

标签: java eclipse eclipse-rcp rcp errorlevel


【解决方案1】:

这应该很简单:只需添加System.exit(<your error code>);

示例批处理文件:

java -classpath "%~dp0dist\StackOverflow3.jar" retvalue.RetValue
echo batch layer: %ErrorLevel%
pause

示例 java 源代码:

package retvalue;

public class RetValue {

    public static void main(String[] args) {
        System.out.println("returning with 5"); 
        System.exit(5);
    }
}

控制台输出:

C:\daten\chris\source\netbeans\StackOverflow3>java -classpath "C:\daten\chris\source\netbeans\StackOverflow3\dist\StackOverflow3.jar" retvalue.RetValue
returning with 5

C:\daten\chris\source\netbeans\StackOverflow3>echo batch layer: 5
batch layer: 5

C:\daten\chris\source\netbeans\StackOverflow3>pause
Drücken Sie eine beliebige Taste . . .

【讨论】:

  • 我使用的是 Eclipse RCP 应用程序,而不是 Java 应用程序
【解决方案2】:

您必须在结束应用程序时使用System.Exit(value) 进行设置。因此,一种方法是控制使程序异常完成的异常,然后使用它结束程序以返回您想要的 errorlevel 值。

您可以返回您想要使用它的int 值。例如:

// If I had IOException, then
System.exit(3);

参考:System.exit

编辑:您对号码的问题与%errorlevel%值有关,请改用ERRORLEVEL,例如:

if ERRORLEVEL 0 (
  echo All ok
) else (
  echo An error
)

请注意,ERRORLEVEL 会比较 %errorlevel% 的值是否等于或高于您给它的值。

我为什么这么说?我以前遇到过与您相同的问题,%errorlevel% 似乎比必须更新的时间晚。我不知道原因,但我可以告诉你,如果你通过ERRORLEVEL 检查它的值,你会检查这个值是否正确。

您只需检查您的较高值返回之前,因为ERRORLEVEL 检查该值是否相等或更高。

参考:%errorlevel% is not ERRORLEVEL

【讨论】:

  • 感谢您的即时回复!!。我试过了,但是在退出程序并执行 echo %ErrorLEvel% 后仍然显示 0. 而不是我使用 System.exit(value) 设置的值
  • 这是%errorlevel%的问题,改用ERRORLEVEL。让我更新我的答案,告诉你怎么做。
  • 嗨..你能告诉我这是如何实现的吗?
  • @Ragu 答案已更新,您只需检查之前返回的较高值,因为 ERRORLEVEL 会检查该值是否相等或更高。
  • 我的应用程序是 Eclipse 应用程序,而不是 Java 应用程序。所以它是 eclipse 如果我设置 System.exit(value) 那么相同的值不会用 echo %ERRORLEVEL% 更新
【解决方案3】:

您可以使用System.exit(...)调用设置当进程存在时JVM返回的错误代码。例如:

System.exit(10);

这将以退出代码 10 结束 JVM 进程。

【讨论】:

    猜你喜欢
    • 2015-07-31
    • 2015-08-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2013-11-12
    相关资源
    最近更新 更多