问题标签 [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.

0 投票
1 回答
2961 浏览

java - Commons Daemon procrun 失败,退出代码为 5 - “apxServiceControl()”错误

我正在使用 Apache Commons Procrun(prunsrv.exe,重命名 testService.exe)将 .jar 安装为 Windows 服务。它成功安装了服务,并出现在 Windows 服务管理器中。

当我尝试启动服务时,它失败了。这是带有相关错误的 commons-daemon 日志:

这是我编写的安装/启动服务的脚本:

任何想法该错误可能意味着什么?我似乎找不到任何有关此的信息,这让我发疯。

0 投票
0 回答
376 浏览

java - 远程调试 java 应用程序作为服务时遇到的问题

我关注了这个 SO 帖子:

要设置哪些 Java 命令行选项以允许远程调试 JVM?

并且能够通过prunsrv / procrun远程调试作为 Windows 服务运行的 Java 应用程序。

当我使用 option 运行服务时suspend=n,我可以通过 eclipse 连接远程调试器:

但是当我给出 option 时suspend=y,我收到以下错误:

Commons Daemon procrun 失败,退出值:5(无法启动服务)

知道为什么suspend=y会导致此错误。(不幸的是,没有生成 prunsrv 的详细日志)

0 投票
1 回答
128 浏览

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"

0 投票
1 回答
242 浏览

java - 向注册表中的环境添加多个值并在 Java 应用程序中检索

我正在使用 procrun 将 java 应用程序作为服务运行。

我使用以下设置路径:

它将注册表中的环境值更新为:

在此处输入图像描述

但是,在我的 Java 应用程序中,当我尝试获取PATH的值时:

我只得到第一个值(即上述情况下的 dir1。如果我将路径设置为dir2;dir1;%PATH%,我只得到 dir2)

我是以错误的方式检索还是以错误的方式设置?

0 投票
1 回答
662 浏览

java - java.lang.NoClassDefFoundError procrun

我试图通过 procrun 使我的 java 应用程序成为 Windows 服务。但是当我启动服务时,出现以下错误:

有人能帮我吗?谢谢你

安装文件批处理

0 投票
0 回答
357 浏览

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 作为服务运行时才会出现此问题。

0 投票
1 回答
157 浏览

windows - 无法通过 ProcRun 将打包的可执行文件作为 Windows 服务启动

的帮助下将可执行文件作为 启动。

我按照以下步骤操作。

  1. 创建了一个名为, 的run.bat来创建服务。
  1. 创建了一个, batchSample.bat, 来启动一个 URL:
  1. 转换为,batchSample.exe并将其放入C:\Program Files (x86)\Test.
  2. 执行run.bat

此时windows服务,Test启动没有给出任何错误,但它没有batchSample.exe像使用的那样执行--StartImage

感谢你的帮助。

0 投票
0 回答
324 浏览

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:

0 投票
0 回答
1764 浏览

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 问题

0 投票
1 回答
650 浏览

java - 错误“目录名称无效。” 使用 apache daemon windows service 执行 jar 时

我正在尝试将一个简单的 java jar 作为 Windows 服务运行。创建服务并尝试启动它后,我收到以下错误:

ServiceStart 返回 5。目录名无效。

完整日志:

即使我以管理员身份运行命令,Windows 事件查看器也会显示以下内容:

用于创建服务的命令:

开始.bat

我在 daemon.jar 中有一个非常简单的代码,如下所示,如果使用 java -jar 执行,jar 可以工作: