首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >procrun in --StartMode=Jvm运行抛出异常的主进程不终止

procrun in --StartMode=Jvm运行抛出异常的主进程不终止
EN

Stack Overflow用户
提问于 2016-03-30 16:01:18
回答 1查看 470关注 0票数 1

尝试使用Apache procrun时,我看到了一种我不理解的行为。归结起来就是Java程序的main方法抛出了一个异常。这不会记录在任何地方,Windows服务也不会停止。为了进一步研究,我将main方法更改为

代码语言:javascript
复制
public static void main(String[] args) throws Exception {
  if (args.length<10000000) {
    throw new Exception("one exception right away");
  }
  ...
}

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

作为参考,以下是使用procrun安装服务的方式:

代码语言:javascript
复制
& $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),而不是尖叫、叫喊和退出。

EN

回答 1

Stack Overflow用户

发布于 2016-03-30 16:48:54

在我围绕main包装了一个catch(Throwable)之后,记录了所有弹出的东西,然后退出而不重新抛出,我看到了问题所在。我有一台java.lang.NoClassDefFoundError

底线:procrun似乎接受了错误类型的异常,如果在被调用的Java程序中抛出一个异常,它甚至不会终止。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36302941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档