用 javac + java 命令行足够学习 Java:需装 JDK 并配置 PATH,单文件编译运行(javac Hello.java → java Hello),类名须与文件名一致;依赖用 -cp 引入 jar;调试类加载用 java -verbose:class。

用 javac + java 命令行就够了,别急着装 IDE
学习 Java 语法、JVM 基础、类加载机制时,IDE(如 IntelliJ 或 Eclipse)反而会掩盖关键路径。真正需要的只是能编译、运行、查错的最小闭环。
确认已安装 JDK(非 JRE),并验证:
javac -version若提示“command not found”,说明
java -version
JAVA_HOME 未设或 PATH 未包含 $JAVA_HOME/bin。Windows 用户注意:不要把 JDK 装在带空格或中文路径下(比如 C:\Program Files\...),否则 javac 可能静默失败。
单文件项目就用 javac 手动编译,不建 Maven/Gradle 工程
初学 String、ArrayList、异常处理、封装继承多态时,一个 Hello.java 文件足矣。Maven 的 pom.xml 和目录结构是干扰项,不是必需品。
- 写好代码后,终端进入该文件所在目录,执行:
javac Hello.java
成功则生成Hello.class - 运行:
java Hello
注意:不加.class后缀,且类名必须与文件名一致、首字母大写 - 如果报
error: class HelloWorld is public, should be declared in a file named HelloWorld.java,说明public class名和文件名不匹配——这是新手最常卡住的地方
依赖少就用 -cp 指定 jar,别碰构建工具
真要读 Excel(Apache POI)或发 HTTP 请求(OkHttp),下载对应 .jar 文件,用 -cp 参数引入即可,不用配仓库、写依赖坐标。
立即学习“Java免费学习笔记(深入)”;
例如:把 okhttp-4.12.0.jar 和你的 NetworkTest.java 放在同一目录:
javac -cp okhttp-4.12.0.jar NetworkTest.javaWindows 用户把
java -cp ".:okhttp-4.12.0.jar" NetworkTest
: 换成 ;(即 ".;okhttp-4.12.0.jar")注意:-cp 中的 . 表示当前目录,漏掉会导致找不到你自己的 .class 文件;多个 jar 用 :(Linux/macOS)或 ;(Windows)分隔。
java -verbose:class 是比断点更底层的调试入口
学类加载、双亲委派、静态块执行顺序时,IDE 的调试器藏得太深。直接加 JVM 参数看真实行为更直观:
java -verbose:class Hello
它会逐行打印每个被加载的类及其来源(比如 java.lang.Object 来自 rt.jar 或 modules)。配合 System.out.println("static block"),你能清楚看到类加载和初始化的时机差异。
容易忽略的是:-verbose:class 输出量极大,建议重定向到文件:
java -verbose:class Hello 2> load.log然后用
grep 筛选关键类名。另外,Java 9+ 默认模块系统下,部分核心类不再显示为 .jar 路径,而是 module://java.base 这类标识——这不是错误,是模块化表现。










