我将主类作为命令行参数传递给启动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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句