练习:通过命令行给main方法传参,打印版本号。
源码:
我一开始的做法:
1.编译:直接找到该文件位置对其编译(javac),编译成功。
2.执行:但是执行(java)编译生成的字节码文件时,显示找不到主类Test
上网查阅资料后,我在D:\eclipse\sj\src路径下打开cmd,编译时,提供了完整的包路径
执行时也提供了包路径,就解决了(如下图)。(但还是不懂为啥子,有没有大佬给我讲讲)
总结:
如果要执行的类是在某个包内,
则你需要在包含这个包的路径下打开cmd(本例中,这个路径就是D:\eclipse\sj\src) ,
然后执行以下2条命令:
1.javac 完整包路径/xxx.java
2.java 完整包路径.xxx
后续补充:又经一番查找,笔者疑问基本解决。
首先观察源码可知,Test类处在包wsy.cn中,所以明确一点,在运行时,要想JVM找到该类,必需提供该类完整限定名称,即wsy.cn.Test。
这也就指出了我最初做法的错误,代码示例如下:
//错误,类名不完整
D:\eclipse\sj\src\wsy\cn>java Test
//错误,当前目录结构不存在wsy/cn
D:\eclipse\sj\src\wsy\cn>java wsy.cn.Test
//正确做法,首先切换到正确目录
D:\eclipse\sj\src\wsy\cn>cd ../../
//然后输入完整类名,这样JVM就会在wsy/cn目录下找到Test.class并执行
D:\eclipse\sj\src>java wsy.cn.Test -version
//最终结果
v 1.0
总结:
1.检查你的类名是否完整,如果类处在某个包内,那么完整类名应该如下:
packagename.packagename2.ClassName
2.检查Java命令执行时所处的目录,判断JVM是否能在该目录下找到packagename/packagename2,从而找到要执行的类。