正常に実行するには、JAVA_HOME環境を設定する必要があるアプリケーションがあります。しかし、RHELサーバーでは、現在のバージョンのJavaは「openjdkバージョン「1.8.0_302」。
以下は、特定のユーザーのみが実行できるように構成し、JAVA_HOMEパスも定義したサービスファイルです。
[Service]
Type=simple
User=testuser
Restart=always
RestartSec=5sec
IgnoreSIGPIPE=no
KillMode=process
Environment="OPENICF_OPTS=-Xmx1024m"
Environment=JAVA_HOME=/path to jdk/JDK/jdk-11.0.15.1/
ExecStart=/path to conf file/bin/Connect.sh /start
このサービスを有効にして起動すると、シェルスクリプトはまだアプリケーションと互換性のないopenjdk 1.8バージョンを使用して実行されます。したがって、サービスは開始されず、アクティブになりません。
ちなみに、以下は私のシェルスクリプトの短い部分です。connect.sh。 BashスクリプトでJava変数がどのように定義されるかを見ることができます。
# Check Java availability
if type -p 'java' >/dev/null; then
JAVA=java
elif [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="$JAVA_HOME/bin/java"
else
echo JAVA_HOME not available, Java is needed to run the Server
echo Please install Java and set the JAVA_HOME accordingly
exit 1
fi
誰でもこの問題を解決するのに役立ちますか?ここで何が間違っているのかわかりません。
答え1
export PATH="${JAVA_HOME}/bin:${PATH}"
Connect.sh
始めにまたは使用するスクリプト全体の"$JAVA"
代わりにjava
、取除く:
if type -p java >/dev/null; then
JAVA=java
el
または、少なくとも2番目のケースにしてください。
if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="$JAVA_HOME/bin/java"
elif type -p java >/dev/null; then
JAVA=java
...
または:
if [ -n "$JAVA_HOME" ]; then
JAVA="$JAVA_HOME/bin/java"
else
JAVA=java
fi
if ! type -p "$JAVA" >/dev/null; then
echo Cannot find java as instructed
exit 1
fi
(もちろん、このアプローチは、環境変数のパスが実際に存在するかどうかに関係なく、環境変数が設定されるたびに無視する必要/usr/bin/java
があることを意味します。)JAVA_HOME