Maven 应用程序单独运行但不与 systemd 一起运行

Maven 应用程序单独运行但不与 systemd 一起运行

我正在尝试跑步Sphinx4-Http-服务器在 RHEL 上。如果我在目录中/home/alex/Sphinx4-HTTP-server并运行命令/home/alex/apache-maven-3.6.1/bin/mvn exec:java -Dexec.mainClass="org.jitsi.sphinx4http.server.HttpServer",那么服务器将运行。但是,当我.service为程序创建文件时(如下所示),我收到程序错误(具体来说java.lang.ClassNotFoundException: "org.jitsi.sphinx4http.server.HttpServer")。在 Ubuntu 上使用此文件可以工作(调整路径名),并且.service在 RHEL 上使用类似的文件用于其他程序也可以。为什么程序会在 shell 中运行而不是在 systemd 中运行,即使 systemd 文件在另一个系统上运行并且类似的 systemd 文件在同一系统上运行?我该如何修复它?

sphinx.service:

[Service]
WorkingDirectory=/home/alex/Sphinx4-HTTP-server
ExecStart=/home/alex/apache-maven-3.6.1/bin/mvn exec:java -Dexec.mainClass="org.jitsi.sphinx4http.server.HttpServer"
Restart=always
StandardOutput=syslog
SyslogIdentifier=sphinx
User=alex

[Install]
WantedBy=multi-user.target

答案1

经过一些研究并尝试各种修复后,似乎解决方案是“6号”当我可以直接运行我的应用程序时,为什么它不能在 systemd 下运行?”。

而不是使用

ExecStart=/home/alex/apache-maven-3.6.1/bin/mvn exec:java -Dexec.mainClass="org.jitsi.sphinx4http.server.HttpServer"

我需要使用这条线

ExecStart=/bin/bash -c '/home/linguini/apache-maven-3.6.1/bin/mvn exec:java -Dexec.mainClass="org.jitsi.sphinx4http.server.HttpServer"'

重要的部分是/bin/bash -c ''在正确的 shell 中运行命令。

相关内容