走ろうとしています。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で同様のファイルを使用しても機能します。 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 ''
正しいシェルでコマンドを実行することです。