当前位置: 首页 > 面试题库 >

如何动态地将命令行参数传递给main方法

潘凯
2023-03-14
问题内容

我将主类作为命令行参数传递给启动VM

现在我需要将命令行参数传递给该主类

有什么办法吗?

这就是我做的方式

    VirtualMachineManager manager = Bootstrap.virtualMachineManager();
    LaunchingConnector connector = manager.defaultConnector();
    Map arguments = connector.defaultArguments();
    ((Connector.Argument)arguments.get("options")).setValue(userVMArgs);
    ((Connector.Argument)arguments.get("main")).setValue(cmdLine);

这里的userVMargs是我的主类的类路径,也是该类的类路径,该类路径用于调用主类内部的类方法

和cmdLine拥有我的主类以及该类及其功能,我使用eclipse作为IDE来开发我的项目


问题答案:

如果要通过发送参数来启动VM,则应发送VM参数而不是程序参数。

程序参数是传递给您的应用程序的参数,可通过main方法的“
args”字符串数组参数进行访问。VM参数是诸如传递给JavaSW解释器的系统属性之类的参数。上面的Debug配置基本上等效于:

java -DsysProp1=sp1 -DsysProp2=sp2 test.ArgsTest pro1 pro2 pro3

VM参数位于对Java解释程序(即’java’)的调用之后,在Java类之前。程序参数放在Java类之后。

考虑一个程序ArgsTest.java:

package test;

import java.io.IOException;

    public class ArgsTest {

        public static void main(String[] args) throws IOException {

            System.out.println("Program Arguments:");
            for (String arg : args) {
                System.out.println("\t" + arg);
            }

            System.out.println("System Properties from VM Arguments");
            String sysProp1 = "sysProp1";
            System.out.println("\tName:" + sysProp1 + ", Value:" + System.getProperty(sysProp1));
            String sysProp2 = "sysProp2";
            System.out.println("\tName:" + sysProp2 + ", Value:" + System.getProperty(sysProp2));

        }
    }

如果输入为

java -DsysProp1=sp1 -DsysProp2=sp2 test.ArgsTest pro1 pro2 pro3

在命令行中,在项目bin文件夹中将显示以下结果:

Program Arguments:
  pro1
  pro2
  pro3
System Properties from VM Arguments
  Name:sysProp1, Value:sp1
  Name:sysProp2, Value:sp2


 类似资料:
  • 我使用atom-run(https://github.com/lsegal/atom-runner)运行内联我的nodejs程序。 使用此插件时,是否可以传递命令行参数?点击Alt R启动节点,但由于我的脚本需要参数,它失败了。 在运行之前,如何传递命令行参数?

  • 要启动Java程序,我可以传递如下参数: 在gradle命令行中有哪些好的方法可以做到这一点: 这是正在建造的。格雷德尔:

  • 问题内容: 我有一个用Node.js编写的Web服务器,我想使用一个特定的文件夹启动。我不确定如何在JavaScript中访问参数。我正在像这样运行节点: 这是我的服务器代码。Node.js帮助说这是可能的: 如何在JavaScript中访问这些参数?不知何故我无法在网上找到此信息。 问题答案: 参数存储在 以下是有关处理命令行参数的节点文档: 是一个包含命令行参数的数组。第一个元素是’node’

  • 我必须向main方法传递两个参数。我的构建脚本是 如果我尝试: 然后发生了一个错误。 如何轻松地将参数传递到主方法命令行?

  • 如何将字符串的命令行参数传递给java main方法,以便调用另一个类中的特定方法? 我需要能够通过“java Statdriver mean”调用mean方法,或者“java Statdriver std”调用标准偏差方法,或者不传递任何参数将导致通过终端调用mean方法。 按我的方式做似乎不起作用。我认为我的问题在于如果,否则如果,否则循环。 这是我的密码:

  • 问题内容: 我有一个用Node.js编写的Web服务器,我想使用一个特定的文件夹启动。我不确定如何在JavaScript中访问参数。我正在像这样运行节点: 这是我的服务器代码。Node.js帮助说这是可能的: 如何在JavaScript中访问这些参数?不知何故,我无法在网上找到此信息。 问题答案: 标准方法(无库) 参数存储在 以下是有关处理命令行参数的节点文档: 是一个包含命令行参数的数组。第一