0

Java クラスを実行しようとするシェル スクリプトがあります。スクリプトは次のようになります。

export VAL1="param1";
export VAL2="param2";
set JAVA_HOME
set CLASSPATH
exec ${JAVA_HOME}/bin/java \
  -Dsun.net.inetaddr.ttl=1 \
  -Dsun.net.inetaddr.negative.ttl=1 \
  -Djava.io.tmpdir=<SOME-PATH>/tmp \
  -Dfile.encoding=UTF-8 \
  -XX:HeapDumpPath=<SOME-PATH>/var/output/logs/ \
  -XX:+HeapDumpOnOutOfMemoryError \
  \
  ${JVM_ARGS} \
  com.cron.cronRunner \
  ;

exit $?

以下で呼び出している cronRunner クラスにコマンドライン引数として VAL1 と VAL2 を渡したいと思います。$VAL1 と $VAL2 を試してみましたが、引数を逆参照しようとすると、クラスが NPE をスローします。

ここで何が間違っていますか?これが私が試した方法でした。

編集:

  export VAL1="param1";
    export VAL2="param2";
    set JAVA_HOME
    set CLASSPATH
    exec ${JAVA_HOME}/bin/java \
      -Dsun.net.inetaddr.ttl=1 \
      -Dsun.net.inetaddr.negative.ttl=1 \
      -Djava.io.tmpdir=<SOME-PATH>/tmp \
      -Dfile.encoding=UTF-8 \
      -XX:HeapDumpPath=<SOME-PATH>/var/output/logs/ \
      -XX:+HeapDumpOnOutOfMemoryError \
      \
      ${JVM_ARGS} \
      com.cron.cronRunner $VAL1 $VAL2 \
      ;

    exit $?
4

1 に答える 1

0

メイン クラスの名前の直後に引数を配置します。

  ...
  ${JVM_ARGS} \
  com.cron.cronRunner $VAL1 $VAL2\
  ;

編集: OPが同じものを反映するように編集される前にこれを投稿しました

于 2013-07-29T14:49:22.453 に答える