Java 搜索字节码以查找对System.exit的调用

Java 搜索字节码以查找对System.exit的调用,java,bytecode,system.exit,Java,Bytecode,System.exit,我有一个Java批处理,它正在神秘地调用System.exit 是否有一种方法可以静态分析类路径中的所有字节码,以查看对System.exit的调用可能来自何处 我无法访问运行批处理的环境,因此无法轻松修改环境以捕获此调用。我发现: If you use Unix/Linux: Exit-code above 128 means that the process died because of a received signal (exitCode = 128 + signalNumber).

我有一个Java批处理,它正在神秘地调用
System.exit

是否有一种方法可以静态分析类路径中的所有字节码,以查看对
System.exit
的调用可能来自何处

我无法访问运行批处理的环境,因此无法轻松修改环境以捕获此调用。

我发现:

If you use Unix/Linux: Exit-code above 128 means that the process died because of a received signal (exitCode = 128 + signalNumber). ==> In your case it was signal 9 (= SIGKILL). 如果使用Unix/Linux: 退出代码高于128表示进程因收到错误而死亡 信号(exitCode=128+signalNumber)。 ==>在你的情况下,是信号9(=SIGKILL)。 在这里:

所以可能有人杀了你的那批人。

我发现:

If you use Unix/Linux: Exit-code above 128 means that the process died because of a received signal (exitCode = 128 + signalNumber). ==> In your case it was signal 9 (= SIGKILL). 如果使用Unix/Linux: 退出代码高于128表示进程因收到错误而死亡 信号(exitCode=128+signalNumber)。 ==>在你的情况下,是信号9(=SIGKILL)。 在这里:


因此,可能有人
杀死了你的一批人。

你认为为什么会调用
系统.exit
?可能抛出了一个未处理的异常并使您的批崩溃。我不是100%确定,但我们在launcher shell脚本中得到了137的返回码,向bash添加-x参数表明JVM正在退出,返回代码为137。如果您有权访问应用程序的jar文件,您可以直接访问它,然后搜索
System.exit
Yes,我知道我可以反编译,但批处理大约有40个.jar,所以可以搜索字节码的东西会很有用:)@Rich:你能更新问题和标题以匹配讨论吗。(假设java应用程序退出,返回代码137)。您认为为什么会调用
System.exit
?可能抛出了一个未处理的异常并使您的批崩溃。我不是100%确定,但我们在launcher shell脚本中得到了137的返回码,向bash添加-x参数表明JVM正在退出,返回代码为137。如果您有权访问应用程序的jar文件,您可以直接访问它,然后搜索
System.exit
Yes,我知道我可以反编译,但批处理大约有40个.jar,所以可以搜索字节码的东西会很有用:)@Rich:你能更新问题和标题以匹配讨论吗。(假设java应用程序退出,返回代码137)。