JAVA自学之路1.1:JAVA入门纠错 [复制链接]
发表于 2026-1-24 17:39:33 | 显示全部楼层 |阅读模式
1.1、JAVA入门纠错

在JAVA入门这篇文章里有些题目和错误必要改正,懒得再改那篇文章了,直接写在这好了。
  1. package test.test1;
  2. public class HelloWorld {
  3.     public static void main(String[] args) {
  4.         System.out.println("Hello World");
  5.     }
  6. }
复制代码
在之前的文章里,我将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 是 javac(Java 编译器)下令中的一个非常告急且常用的选项,它的全称是 “destination”,意思是:指定编译后天生的 .class 文件存放的根目次。格式如下:
  1. javac -d <目标目录> <源文件>.java
复制代码
假如我在E:\test\test1这个目次利用下令行,然后实行javac -d . HelloWorld.java,由于javac没有在这个目次里找到\test\test1这个目次,那么它就会主动创建子目次:
  1. E:\test\test1\test\test1\HelloWorld.class   ❌ 错了!
复制代码
准确做法就是我之前上一篇文章的演示,在E盘根目次下实行该下令。
那假如你不警惕将.java文件放在这个目的文件夹下,还想要正常实行编译的话得换个下令:


着实这种做法更加方便,由于当前工作目次就是package指定路径以是可以直接用javac编译。
假如源代码里有中文就改成javac -encoding utf-8 HelloWorld.java。
我个人更加保举这种做法,把源文件放在目的路径下更符合标准,也方便文件管理,而且IDEA创建JAVA类也是这么干的。

免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表