我有一个 java 进程启动另一个 java 进程,并通过以下方式启用了 JMX 支持
java -Dcom.sun.management.jmxremote.port=8088 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar app.jar
我的问题是,如果端口 8088 正在使用,生成进程的 jvm 将抛出 BindException 并且 JVM 将正常退出。我无法向进程报告由于绑定(bind)异常而生成的进程未启动。如何捕获/处理 JVM 抛出的 BindException 以便生成的进程可以执行 System.exit(VALID_ERROR_CODE)?这个异常甚至在任何控制传递给用户代码之前就会发生,所以我猜想在用户代码中不可能处理它。
知道如何处理这个用例吗?
最佳答案
您应该将 stderr(也可能是 stdout)从子进程重定向到父进程或 System.err (System.out)。 关注https://stackoverflow.com/a/1570269/1137529了解更多详情。
关于java - 处理初始化期间 JVM 抛出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8736081/