web-dev-qa-db-ja.com

「VMの初期化中にエラーが発生しました」の取得

Autosysジョブスケジューラによって呼び出されているレガシーシェルスクリプトがあります。スクリプトでは、jarファイルを呼び出しています

res="`$Java_HOME/bin/Java ....`"
echo >$res<

次のエラーが発生します。

Error occurred during initialization of VM 
    Java.lang.Error: Properties init: Could not determine current working directory.

だからシェルスクリプトで私は以下に示すように現在のディレクトリを印刷しようとしました

echo "PWD:" "$PWD"    # Nothing gets printed.
echo "USER:" "$USER"  # User id is getting printed

if [ -d "/export/home/abc/" ]; then
    echo "Directory present"    # gets printed
    echo `ls -ltr`              # total 3 gets printed
    echo `cd /export/abc/def`
    echo `pwd`                  # nothing gets printed
fi

すべてのクラスパスがスクリプト自体に設定されており、クラスパスは正常に見えます。私はここで問題になる可能性があるものを取得していません。

また、このスクリプトは、Autosysジョブスケジューラによって呼び出される別のスクリプトによって呼び出されていることに注意してください。

17
NJMR

ヒントをくれたAndrewに感謝します。

投稿で述べたように、これはレガシースクリプトであり、各スクリプトに何千行もあり、分析が困難でした。しかし、最終的に、エラーが発生しているプロセスが別のユーザーによって起動されていることがわかりました。そのユーザーには親フォルダにアクセスする権限がなかったため、

Could not determine current working directory.

そのユーザーに親フォルダへのアクセス許可を与えたところ、機能しました。あなた方全員に感謝します...

4
NJMR

これは予想される動作です。

スクリプトはサブシェルで実行され、親シェルの作業ディレクトリを変更することはできません。終了するとその効果は失われます。

回避策のSOリファレンス

5
Sadiq Ali