如何使用普通变量传递系统变量以在命令行批处理脚本中调用java程序
Posted
技术标签:
【中文标题】如何使用普通变量传递系统变量以在命令行批处理脚本中调用java程序【英文标题】:How to pass system variable with normal variable to call java program in command line batch script 【发布时间】:2021-08-03 14:50:09 【问题描述】:java -cp %EPM_JAVA_CLASSPATH% -DEPM_ORACLE_INSTANCE=%1 -DHFM_CLUSTER=%2 -DHFM_APPLICATION=%3 runConsoltesting %4 %5 %6 %7
当我尝试访问第 5 个参数时,它显示:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at runConsoltesting.main(runConsoltesting.java:42)
它只接受到类名的参数
【问题讨论】:
尝试引用所有%
参数。
您只向主类传递 四个 参数:%4 %5 %6 %7
(如果非空)将分别为 args[0] args[1] args[2] args[3]
。 -Dname=value
before 类名是参数,更准确地说是选项到 JVM 但不是到主类。
@dave_thompson_085 感谢您的解释!它工作..
【参考方案1】:
在主类 runConsoltesting 之后给出的都是主方法参数,总共有 4 个(%4,%5,%6,%7)。因此,当您尝试访问第五个元素时,您会收到 ArrayOutOfBoundException。
%1、%2 和 %3 是 JVM 参数,而不是 java 主方法参数。所以这些可以在下面的代码中读取。
System.getProperty(String property),这里的属性是你的 -D 参数的名称。
例如,System.getProperty("EPM_ORACLE_INSTANCE") 将返回为 %1 位置设置的值。
【讨论】:
以上是关于如何使用普通变量传递系统变量以在命令行批处理脚本中调用java程序的主要内容,如果未能解决你的问题,请参考以下文章