나는 달리려고 노력하고있다.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 ''
올바른 쉘에서 명령을 실행하는 것입니다.