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

我将我的主类作为命令行参数传递给启动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参数而不是Program参数.

程序参数是传递给应用程序的参数,可以通过main方法的“args”String数组参数访问它们. 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文件夹中将给出以下结果:

06003

标签:java,eclipse

来源: https://codeday.me/bug/20190926/1819021.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值