JAVA入门纠错
在JAVA入门这篇文章里有些问题和错误需要纠正懒得再改那篇文章了直接写在这好了。package test.test1; public class HelloWorld { public static void main(String[] args) { System.out.println(Hello World); } }在之前的文章里我将HelloWorld.java文件放在了E盘根目录下然后自己创建了E:\test\test1这个目录。然后执行了javac -encoding utf-8 -d . HelloWorld.java.class文件也正常生成在了目标路径下。然后也能正常运行。但是我忘记说这个命令需要注意当前工作目录了假设我的当前工作目录是E:\test\test1然后执行javac -d . HelloWorld.java会发生下面的状况它在这个test1文件夹下又创建了一个\test\test1因为这条命令里javac的执行逻辑如下读取你的.java文件发现package test.test1;在当前目录.下创建test\test1\HelloWorld.class由-d指定。javac编译器在编译时并不会强制检查源文件的物理路径是否和package声明一致它只做上面的两件事。关于-d指令-d是javacJava 编译器命令中的一个非常重要且常用的选项它的全称是“destination”意思是指定编译后生成的.class文件存放的根目录。格式如下javac -d 目标目录 源文件.java如果我在E:\test\test1这个目录使用命令行然后执行javac -d . HelloWorld.java因为javac没有在这个目录里找到\test\test1这个目录那么它就会自动创建子目录E:\test\test1\test\test1\HelloWorld.class ❌ 错了正确做法就是我之前上一篇文章的演示在E盘根目录下执行该命令。那如果你不小心将.java文件放在这个目标文件夹下还想要正常执行编译的话得换个命令其实这种做法更加方便因为当前工作目录就是package指定路径所以可以直接用javac编译。