Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在shell脚本中传递java命令行参数_Java_Shell - Fatal编程技术网

在shell脚本中传递java命令行参数

在shell脚本中传递java命令行参数,java,shell,Java,Shell,我有一个shell脚本,它试图运行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

我有一个shell脚本,它试图运行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 $?
export VAL1=“param1”;
export VAL2=“param2”;
设置JAVA_主页
设置类路径
exec${JAVA_HOME}/bin/JAVA\
-Dsun.net.inetaddr.ttl=1\
-Dsun.net.inetaddr.negative.ttl=1\
-Djava.io.tmpdir=/tmp\
-文件编码=UTF-8\
-XX:HeapDumpPath=/var/output/logs/\
-XX:+HEAPDUMPONAUTOFMEMORYERROR\
\
${JVM_ARGS}\
com.cron.cronRunner\
;
退出$?
我希望将VAL1和VAL2作为命令行参数传递给下面调用的cronRunner类。我尝试使用$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 $?
export VAL1=“param1”;
export VAL2=“param2”;
设置JAVA_主页
设置类路径
exec${JAVA_HOME}/bin/JAVA\
-Dsun.net.inetaddr.ttl=1\
-Dsun.net.inetaddr.negative.ttl=1\
-Djava.io.tmpdir=/tmp\
-文件编码=UTF-8\
-XX:HeapDumpPath=/var/output/logs/\
-XX:+HEAPDUMPONAUTOFMEMORYERROR\
\
${JVM_ARGS}\
com.cron.cronRunner$VAL1$VAL2\
;
退出$?

将参数放在主类名称后面:

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

编辑:我在编辑OP之前发布了这篇文章,以反映相同的内容

请在您尝试使用$VAL1和$VAL2的地方发布呼叫-通常,这是正确的方法。向我们展示您如何尝试引用cronRunner中的参数。另外,这是使用
bash
ksh
,还是其他工具运行的?已修复。我做的试验是正确的。我在传递参数时输入了一个错误