问题标签 [procrun]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Commons Daemon procrun 失败,退出代码为 5 - “apxServiceControl()”错误
我正在使用 Apache Commons Procrun(prunsrv.exe,重命名 testService.exe)将 .jar 安装为 Windows 服务。它成功安装了服务,并出现在 Windows 服务管理器中。
当我尝试启动服务时,它失败了。这是带有相关错误的 commons-daemon 日志:
这是我编写的安装/启动服务的脚本:
任何想法该错误可能意味着什么?我似乎找不到任何有关此的信息,这让我发疯。
java - 远程调试 java 应用程序作为服务时遇到的问题
我关注了这个 SO 帖子:
并且能够通过prunsrv / procrun远程调试作为 Windows 服务运行的 Java 应用程序。
当我使用 option 运行服务时suspend=n
,我可以通过 eclipse 连接远程调试器:
但是当我给出 option 时suspend=y
,我收到以下错误:
Commons Daemon procrun 失败,退出值:5(无法启动服务)
知道为什么suspend=y
会导致此错误。(不幸的是,没有生成 prunsrv 的详细日志)
java - Java:当应用程序使用 Procrun 注册为 Windows 服务时,使用 ProcessBuilder 运行批处理文件
已经有一个 7 岁的问题,标题相似,但没有接受的答案,因此重新发布,因为我的问题有更多细节。
7 岁的问题: 使用 Procrun 从注册为 Windows 服务的 Java 运行批处理文件
我的问题:
我有以下java类:
当这是直接从eclipse运行时,test.bat
成功执行。但是,当它从服务运行时,test.bat
不会被执行。
我已经使用 procrun 将 jar 安装为 Windows 服务。还要验证是否正确安装了服务。我这样做了:
并且这段代码可以毫无问题地从服务中执行。只是 test.bat 没有被执行。
ProcessBuilder
不允许从 procrun 吗?
编辑
我的test.bat
:
start "" cmd /c "echo Hello world!&echo(&pause"
java - java.lang.NoClassDefFoundError procrun
我试图通过 procrun 使我的 java 应用程序成为 Windows 服务。但是当我启动服务时,出现以下错误:
有人能帮我吗?谢谢你
安装文件批处理
log4j - procrun windows 服务未读取我的配置文件且未生成日志(log4J)
我正在尝试使用 Apache Commons Daemon(procrun) 将 jar 作为 Windows 服务运行。这些服务不会产生日志,也不会读取配置文件。
jar 已成功启动。我在我的 jar 中使用 log4j 来记录日志,并将 log4j.properties 包含在 MyJar.jar 中。然而,该服务并未创建任何日志。而且我发现程序没有读取配置文件 - myConfig.config
我使用以下命令安装了服务:
我希望我的代码能够读取配置文件并适当地创建日志。如果我直接运行 jar,一切正常。仅当我使用 Apache Commons Daemon Procrun 将 jar 作为服务运行时才会出现此问题。
jetty - 使用 Apache 守护程序作为 Windows 服务运行时,嵌入式码头未启动
我正在尝试使用 Apache Commons Daemon 1.2.0 将嵌入式码头作为 Windows 服务运行。我可以使用 java -jar 运行嵌入式码头 jar 并成功启动服务器,但是当我尝试使用 Apache Daemon 运行它时它不起作用。
我正在使用 maven shade 插件来生成嵌入式 jar。
使用以下命令使用 prunsrv 安装后启动服务时,日志中会打印以下内容并且服务未启动:
winserv 守护进程日志:
在说明使用 Windows 管理工具 > 服务时,我得到:
试过此服务将无法启动:错误 1067:进程意外终止,但没有帮助。
下面是创建嵌入式码头 jar 的代码: 启动码头的类:
pom.xml 用于使用 maven shade 生成嵌入式码头 jar:
java - Elasticsearch:无法启动 Windows 服务。必须设置系统属性 [es.path.conf]
我们面临来自多个用户的问题,他们无法在他们的机器上使用 Elasticsearch(无法启动 Windows 服务)。正在使用的版本是 6.6.0。
我们从现场获得的信息非常差,不足以对问题做出良好的诊断(希望我们能得到更好的信息)。但是,以下是我们所知道的:
- 标准输出日志文件指出以下内容:
- 服务安装/启动批处理文件指出服务已正确安装和启动。此外,
-Des.path.conf="C:\ProgramData\Elastic\Elasticsearch\config"
是在安装过程中设置的
- 据我们所知,设置了 ES_HOME 和 ES_PATH_CONF:
从我在 ES 源代码中看到的内容来看,错误消息似乎来自“EnviromentAwareComand.java”。似乎在那个级别,System.getProperty("es.path.conf")
正在回归null
。
作为总结,我看到以下内容:
- 环境变量集
- 使用 Java 选项安装的 Windows 服务
-Des.path.conf="C:\ProgramData\Elastic\Elasticsearch\config"
- Windows服务说
ERROR: the system property [es.path.conf] must be set
不幸的是,我们无法访问注册表或 ,elasticsearch-service-mgr.exe
因此我们可以检查es.path.conf
.
我们在这里缺少什么?有谁知道为什么 ES 会抛出这个错误?
提前致谢!
更新
我们能够连接到其中一台有问题的机器。问题的罪魁祸首不知何故是 Window 用户名。
从前面的日志文件中我们可以看到对服务的调用如下:
有趣的部分是如何-Djava.io.tmpdir=C:\Users\KE'SBU~1\AppData\Local\Temp\elasticsearch
设置。如您所见,路径包含一个单引号字符。
通过查看 procrun 存储 java 参数的注册表项,我们可以看到所有 java 选项都因此而损坏(单引号不存在,其余的 JvmOptions-Djava.io.tmpdir
似乎没有被解析):
所以从我的角度来看,问题出在解析 JvmOptions 的地方,不允许使用单引号字符。
更新 2
从 Procrun 文档中:
++JvmOptions 将传递给 JVM 的 -D 或 -X 形式的选项列表。使用 # 或 ; 分隔选项 人物。如果您需要嵌入 # 或 ; 字符将它们放在单引号内。(不用于 exe 模式。)
这在某种程度上意味着单引号是 # 和 ; 的转义字符。...但是,如何转义单引号?
更新 3 为 ES 打开了一个问题,包含解决方法-> ES 问题
java - 错误“目录名称无效。” 使用 apache daemon windows service 执行 jar 时
我正在尝试将一个简单的 java jar 作为 Windows 服务运行。创建服务并尝试启动它后,我收到以下错误:
ServiceStart 返回 5。目录名无效。
完整日志:
即使我以管理员身份运行命令,Windows 事件查看器也会显示以下内容:
用于创建服务的命令:
开始.bat
我在 daemon.jar 中有一个非常简单的代码,如下所示,如果使用 java -jar 执行,jar 可以工作: