gpt4 book ai didi

java - procrun in --StartMode=Jvm running main 抛出异常不会终止

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:12 26 4
gpt4 key购买 nike

尝试Apache procrun我看到一种我不理解的行为。它归结为 Java 程序的 main 方法抛出异常。这不会在任何地方记录,并且 Windows 服务不会停止。为了进一步调查,我将 main 方法更改为

public static void main(String[] args) throws Exception {
if (args.length<10000000) {
throw new Exception("one exception right away");
}
...
}

当我使用 prunsrv.exe 将其安装为服务然后启动它时,它启动时没有问题,并且不产生任何日志输出。特别是服务不会停止。

作为引用,以下是如何使用 procrun 安装服务:

& $procrun "//$operation//$service" `
--DisplayName="$service" `
--Description="$service" `
--DependsOn="$depends" `
--Startup=auto `
--Install="$procrun" `
--Jvm="$JVM" `
--Classpath="$cp" `
--Environment="PATH=$env:JAVA_HOME\bin" `
--JavaHome="$env:JAVA_HOME" `
--StartPath="c:\Search" `
--JvmOptions="-Xmx512M;-Xms512M;-Djava.awt.headless=true" `
--StartMode="jvm" `
--StartClass="$classname" `
--LogPath="c:\Search\std-logs" `
--LogPrefix="procrun-$service" `
--LogLevel="Debug" `
--StdError="c:\Search\std-logs\stderr-$no0" `
--StdOutput="c:\Search\std-logs\stdout-$no0" `
--StartParams="(unused)"

我本以为服务会立即停止,并且在 stderr/stdout 文件中找到一些日志输出,但什么也没有。谁能解释一下吗?

编辑:天哪,似乎 procrun 吞下了 java.lang.Error (在我的例子中 java.lang.noClassDefFoundError),而不是尖叫、喊叫和退出。

最佳答案

在我在主函数周围包裹了一个catch(Throwable),记录了弹出的所有内容,然后退出而不重新抛出,我看到了问题。我收到一个java.lang.NoClassDefFoundError

底线:procrun 似乎会吞下错误类型异常,并且如果在被调用的 Java 程序中抛出异常,甚至不会终止。

创建了一个问题:https://issues.apache.org/jira/browse/DAEMON-344

关于java - procrun in --StartMode=Jvm running main 抛出异常不会终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36302941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com