Java 在初始化期间处理JVM抛出的异常

Java 在初始化期间处理JVM抛出的异常,java,exception-handling,jvm,Java,Exception Handling,Jvm,我让一个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将正常退出。我无法向由于绑定异

我让一个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将正常退出。我无法向由于绑定异常导致生成的进程未启动的进程报告。如何捕获/处理JVM抛出的BindException,以便生成的进程可以执行System.exit(有效的错误代码)?这个异常甚至在任何控件被传递到用户代码之前就发生了,所以我猜不可能在用户代码中处理它


您知道如何处理这个用例吗?

您应该将stderr(也可能是stdout)从您的子进程重定向到父进程或System.err(System.out)。
查看更多详细信息。

在启动子进程之前检查端口是否打开是否可行?i、 e.尝试侦听端口,如果套接字失败,您知道端口不可用。此解决方案的优点是,您可以生成一个新的端口号并继续测试,直到找到一个打开的端口。一旦有了一个有效的端口,就可以修改调用以使用可用的端口启动子JVM。

这会记录到stderr(System.err)中吗?如果是这样,您可以让启动过程查找并报告错误?