我正在尝试跑步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 中运行命令。