如何动态地将命令行参数传递给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有我的主类以及类及其function,我使用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文件夹中将给出以下结果:
Program Arguments: pro1 pro2 pro3 System Properties from VM Arguments Name:sysProp1, Value:sp1 Name:sysProp2, Value:sp2
Run ---> Debug Configuration ---> YourConfiguration ---> Arguments tab
我们可以将字符串值作为参数传递给main方法而不使用java中的命令行参数概念通过Netbean
package MainClass; import java.util.Scanner; public class CmdLineArgDemo { static{ Scanner readData = new Scanner(System.in); System.out.println("Enter any string :"); String str = readData.nextLine(); String [] str1 = str.split(" "); // System.out.println(str1.length); CmdLineArgDemo.main(str1); } public static void main(String [] args){ for(int i = 0 ; i
产量
Enter any string : Coders invent Digital World Coders invent Digital World
转到“运行配置”,在参数选项卡中,您可以编写参数
- ant和java 8 – “主要版本52比51更新,这是该编译器支持的最高主要版本”
- 远程调试:无法连接到远程VM。 连接超时
- Eclipse:如何以编程方式执行启动配置?
- 检索项目的父项时出错:找不到与给定名称“Theme.AppCompat.Light”匹配的资源。 我的R.java失踪了
- Eclipse中的项目,用于构建Eclipse中另一个项目使用的jar
- 主线程java.lang.NoClassDefFoundError中的exception
- 如何正确地在Jar中打包资源
- 如果使用Maven,是否应忽略VCS中特定于Eclipse的文件?
- java.lang.NoSuchMethodError:javax.persistence.Table.indexes()[Ljavax / persistence / Index;