【问题标题】:How to pass system variable with normal variable to call java program in command line batch script如何使用普通变量传递系统变量以在命令行批处理脚本中调用java程序
【发布时间】: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 感谢您的解释!它工作..

标签: java batch-file command-line


【解决方案1】:

在主类 runConsoltesting 之后给出的都是主方法参数,总共有 4 个(%4,%5,%6,%7)。因此,当您尝试访问第五个元素时,您会收到 ArrayOutOfBoundException。

%1、%2 和 %3 是 JVM 参数,而不是 java 主方法参数。所以这些可以在下面的代码中读取。

System.getProperty(String property),这里的属性是你的 -D 参数的名称。

例如,System.getProperty("EPM_ORACLE_INSTANCE") 将返回为 %1 位置设置的值。

【讨论】:

    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2022-10-14
    • 2022-09-23
    • 2022-06-30
    相关资源
    最近更新 更多