JAVA_HOME必须指向JDK根目录(如C:\Program Files\Java\jdk1.6.0_45),而非JRE或bin子目录;PATH需前置%JAVA_HOME%\bin;CLASSPATH通常无需设置;源文件编码须用-javac -encoding显式指定。

JAVA_HOME 必须指向 JDK 根目录,不是 jre 或 bin
Java 1.6 的 JAVA_HOME 如果设成 C:\Program Files\Java\jre6 或 ...\jdk1.6.0_45\bin,后续所有依赖该变量的工具(如 Tomcat、Ant)都会启动失败,报 java.lang.NoClassDefFoundError: java/lang/Object 或直接提示 “找不到 java 命令”。
正确路径是 JDK 解压/安装后的顶层目录,例如:C:\Program Files\Java\jdk1.6.0_45 —— 这个目录下必须包含 bin、jre、lib 子目录。
- 不要带尾部反斜杠(
\),Windows 下JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45\会导致部分脚本解析异常 - 路径含空格时无需引号,但需确保系统环境变量值未被意外截断(建议用右键“属性”→“高级”→“环境变量”图形界面设置,避免命令行
setx截断问题) - 验证方式:在新打开的 CMD 中执行
%JAVA_HOME%\bin\java -version,应输出java version "1.6.0_45"
PATH 中必须显式添加 %JAVA_HOME%\bin,不能只靠 jre 的 java.exe
仅把 JRE 的 bin 加入 PATH(比如 C:\Windows\System32 附近放了个旧版 java.exe),会导致 javac 不可用、keytool 找不到、Maven 编译报错 Cannot run program "javac": CreateProcess error=2。
Java 1.6 开发必须用 JDK 自带的工具链,所以 PATH 里要明确前置:%JAVA_HOME%\bin。
php配置文件php.ini的中文注释版是一本由多位作者编著的有关PHP内部实现的开源书籍。从环境准备到代码实现,从实现过程到细节延展,从变量、函数、对象到内存、Zend虚拟机…… 如此种种,道尽PHP之风流。
立即学习“Java免费学习笔记(深入)”;
- 顺序很重要:把
%JAVA_HOME%\bin放在PATH最前面,避免 Windows 自带或 Oracle 客户端附带的旧java.exe干扰 - 不要重复添加多个 JDK 的 bin 目录,Java 1.6 项目若混入 Java 8 的
javac,编译出的 class 文件默认是 v52.0,运行时报Unsupported major.minor version 52.0 - 验证命令:
where java和where javac应返回同一目录下的两个文件
CLASSPATH 在 Java 1.6 中通常不需要手动设置
除非你硬要跑老式 Applet 或某些遗留 ANT 构建脚本,否则给 CLASSPATH 加 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 反而容易引发冲突 —— 比如 Spring 2.5 启动时报 NoClassDefFoundError: javax/xml/namespace/QName,就是因为 tools.jar 里的旧 XML 类覆盖了应用自带的 JAXP 实现。
- Java 1.6 默认会自动加载
%JAVA_HOME%\jre\lib\*.jar,包括rt.jar、charsets.jar等核心库 -
dt.jar(设计时类)和tools.jar(编译器工具类)只在调用javac、javadoc时由启动器自动注入,不参与运行时类加载 - 如果某老系统明确要求 CLASSPATH,优先用启动脚本内联指定(如
java -cp "lib/*;." MyApp),而非全局环境变量
中文路径和系统区域设置可能让 javac 编译乱码
Java 1.6 的 javac 默认使用操作系统编码读取源文件。如果源码是 UTF-8 且保存在 C:\我的项目\Hello.java,而系统区域设置是“中文(GBK)”,就会报 非法字符: '\u6211' —— 实际是把 UTF-8 字节流当 GBK 解码导致的。
- 最稳方案:用
javac -encoding UTF-8 Hello.java显式指定,别依赖环境变量 - 不推荐改系统区域设置(影响其他软件),也别试图用
file.encodingJVM 参数去“修复”编译器行为(javac不读这个) - IDE 如 Eclipse 3.4 配 Java 1.6 时,务必在项目属性 → “Resource” → “Text file encoding” 设为 UTF-8,并勾选 “Override encoding from container”
JAVA_HOME 路径格式、PATH 顺序、CLASSPATH 的有无、甚至文件系统编码,任何一个和当年 JDK 1.6 的预期稍有偏差,错误信息就非常隐晦。真正跑通往往不是配对了,而是恰好没踩中那几个经典坑。










