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で動作し(パス名を変更する)、他のプログラムで.serviceRHELで同様のファイルを使用しても機能します。 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 ''正しいシェルでコマンドを実行することです。

関連情報