关于Java程序入口args参数
我们都知道一个java工程会有一个主程序入口,即我们常见到的如下代码
public static void main(String[] args) {
// 中间程序
}
但是很多人可能都不知道主程序入口中的String[] args后面的args会有怎么样一个使用场景呢?
其实在Java的main方法中,args是一个String类型的数组参数,用于接收命令行传入的参数。当我们在命令行中运行Java程序时,可以在命令行中通过空格分隔的形式传入一些参数,这些参数会作为字符串元素存储在args数组中,那么我们接下来用实际例子来说明这种情况。
实例说明
第一步:我们假设设置这么样一个工程目录,工程路径:D:\1.JAVA\JmeterDemo
第二步:在HelloWorld.java中编写如下代码
package com.test.demo;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
//获取输入的参数,并且进行打印
System.out.println("input param:" + args.length);
for (int i = 0; i < args.length; i++) {
System.out.println("param " + (i+1) + ": " + args[i]);
}
}
}
第三步:对HelloWorld.java进行编译,使用终端进入对应的文件:HelloWorld.java路径
D:\1.JAVA\JmeterDemo\src\com\test\demo>javac HelloWorld.java
第四步:编译以后,在同样的路径下执行如下命令
D:\1.JAVA\JmeterDemo\src>java com.test.demo.HelloWorld arg1 arg2 arg3
第五步:我们可以得到对应的结果如下:
Hello, World!
input param:3
param 1: arg1
param 2: arg2
param 3: arg3
碰到的坑
1.没有进行编译,直接执行java命令,此时我们会发现如下报错:
D:\1.JAVA\JmeterDemo\src>java com.test.demo.HelloWorld arg1 arg2 arg3
错误: 找不到或无法加载主类 com.test.demo.HelloWorld
2.带有package的路径,但是没有执行对应添加执行对应的package路径,上述代码我们能够看到package的路径是package com.test.demo
package com.test.demo;
但是我们在执行的时候是这样的命令
D:\1.JAVA\JmeterDemo\src>java HelloWorld arg1 arg2 arg3
那么你会得到如下报错:
D:\1.JAVA\JmeterDemo\src>java HelloWorld arg1 arg2 arg3
错误: 找不到或无法加载主类 HelloWorld
错误: 找不到或无法加载主类 HelloWorld
此时有人会说,你这个路径不对,HelloWorld的路径是D:\1.JAVA\JmeterDemo\src\com\test\demo这个,但是此时如果你在这个路径下执行命令的话,同样会报这个错误,所以我们需要将package中的路径带上,如上述第四步执行的命令。
3. 环境变量设置问题(小编未碰到,待各位小伙伴去试验),主要注意以下几点:
①JAVA_HOME路径是否正确,应为安装的文件夹位置
②CLASSPATH路径是否正确,正确的路径如下:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\tools.jar
【注意】上述的 .; 不可省略。
第三个问题引用的内容来自这里
https://blog.csdn.net/edelweiss0o0/article/details/121712814