gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:59:28 25 4
gpt4 key购买 nike

我将主类作为命令行参数传递给启动 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 来开发我的项目

最佳答案

如果你想通过发送参数启动虚拟机,你应该发送虚拟机参数而不是程序参数。

程序参数是传递给应用程序的参数,可通过 main 方法的“args”字符串数组参数访问。 VM 参数是传递给 JavaSW 解释器的系统属性等参数。上面的调试配置本质上等同于:

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

关于java - 如何动态地将命令行参数传递给main方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com