1

我在 Windows 10 工作站上运行一个 java 程序。

我想将我的 java 程序作为服务运行,所以我使用了 apache commons tool prunserv http://commons.apache.org/proper/commons-daemon/procrun.html

问题是我的 java 程序在其中运行一些 windows shell 命令,cmd \c netstat -rn但是当我将我的 java 程序作为服务启动并将 StartPath 指定为某个目录时。我的 java 程序中的命令失败并出现如下错误

Error executing command : [cmd, /c, netstat, -rn], Output is : 'netstat' is not recognized as an 
internal or external command,
operable program or batch file.

我觉得 procrun 的 StartPath 参数覆盖了 C:\Windows\System32 等 PATH 变量,从而使 java 程序中的命令失败

--StartPath 启动映像可执行文件的工作路径。

我应该如何处理这种情况?

如果您需要更多详细信息,请告诉我。

提前感谢您的帮助。

4

1 回答 1

1

Procrun(Prunserv) 提供设置环境的选项

http://commons.apache.org/proper/commons-daemon/procrun.html

++Environment="PATH='C:\Users\Public\agent\jre\bin';'C:\Windows\system32'"

我在环境中添加了 C:\Windows\system32 并且效果很好。

注意: prunserv 中的 Environment 选项是以 key=value 的形式提供给服务的环境变量列表。它们使用 # 或 ; 分隔。人物。如果您需要嵌入 # 或 ; 值中的字符将它们放在单引号内。

于 2020-06-26T06:34:58.613 回答