JVM 8 退出代码 -559038737 (0xDEADBEEF)

2022-09-01 23:52:21

我的应用程序在升级到 Java 8 后开始非确定性失败。它不会引发异常或打印错误消息。其失败的唯一迹象是退出代码 -559038737。有人遇到过这种情况吗?


答案 1

该退出代码可能来自Apache Commons Exec

public interface Executor {

/** Invalid exit code. */
int INVALID_EXITVALUE = 0xdeadbeef;
...

Java 8 中的一些更改可能会引入错误。

但是,在不知道你的类路径和代码的情况下,这只是一个有根据的猜测。

也许你正在使用异步方式来使用Commons Exec:

DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();

Executor executor = new DefaultExecutor();
executor.execute(cmdLine, resultHandler);

int exitValue = resultHandler.waitFor();

return exitValue;

所以异常只捕获在 resultHandler 中,而不是自动在 stderr 上打印?


答案 2

推荐