今天要用 windows 下的dos 命令行来执行一个小demo 发现了如下小坑
使用命令 在当前 .java 文件中 执行 javac Hello.java ,执行成功并且在当前文件夹下
坑:
找不到或无法加载主类
第一个中情况猜想CLASSPATH 下的配置不对
".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;";
上面配置是没有问题的。
第二
查阅资料知道了只要将 当前类的 第一行的package 包名删除掉即可使用,但是这样不符合规范,所以在不删除的包名的基础上应当 javac -d . Hello.java 执行此命令, 在这个命令中点的前后都是有空格的,执行后所产生的class 会在当前目录下创建文件夹,这个文件夹的层级是根据当前.java 文件中的包名来创建的,然后就在执行完javac -d . Hello.java 命令后直接执行
java com.test.Hello 就可以了
由这个可猜想,当使用java 这个小命令运行程序时会先根据当前类的package 包名检索路径下的class
并且还有个小问题,在pc windows 端上 路径是存在问题的请看下图
虚拟机会认为 ./ 电脑本机的目录 而不会认为是当前工程的根目录。所以要写全路径!