Windows安装JDK 1.6.0_06实战:环境变量与多版本共存指南

Windows安装JDK 1.6.0_06实战:环境变量与多版本共存指南
简介面向Windows 32位平台的JDK 1.6.0_06完整工具包适合需要在老旧系统上编写、编译、调试和运行Java程序的开发者也可作为测试环境或离线安装的备份版本。压缩包为zip格式共690个文件、约40.89MB包含exe可执行程序、dll动态链接库、jar类库、properties配置文件以及html/txt/rtf说明文档并附带JVM运行时所需的时区数据与安全组件工具链涵盖javac编译器、JRE运行环境、JDB调试器及Javadoc文档生成器可满足从源码编译到问题排查的完整开发需求。已有323人浏览学习。包内中文与英文README、版权许可、注册信息齐全便于按说明安装并了解授权边界大量时区映射、区域设置及classlist等文件对处理国际化应用或自定制JVM行为具有实用价值整体结构清晰、组件完整能够为Java 6时代的应用开发提供可复现的基础环境。 前几天给同事的Windows 11工作机恢复一套遗留项目的编译环境项目里的构建脚本写死了jdk1.6.0_06还明确要求装在C:\Java\jdk1.6.0_06。一开始我以为这活儿很快装个老JDK能有多难结果光是“装完后java -version还是显示JDK 17”这个问题就折腾了大半天后面又遇到Eclipse指定JRE后编译报错、Maven读取到另一套环境的怪事。把整个window-jdk-jdk1.6.0_06落地过程复盘一遍这次踩坑的经历其实很有代表性——老版本工具在Windows下的安装早就不是单纯的“下一步”能搞定的了。这篇文章把安装包来源、安装选项、环境变量、多版本共存和排查方法完整写出来给正在维护老系统、或者需要复现历史环境的朋友一份可以照着操作的清单。1. 为什么偏偏是 jdk1.6.0_06版本回顾1.1 JDK 6和update 06的背景JDK 6就是Java SE 6内部版本号是1.6.0Sun公司在2006年底发布。它算得上Java历史上寿命很长的一个版本后面经历了6u1到6u45一堆更新包。update 06大约是2008年初放出来的带着一些bug修复和性能优化当时的NetBeans、Eclipse 3.3/3.4这些IDE都在围绕这个版本做兼容。现在回头看1.6.0_06并不是JDK 6生命周期里最成熟的版本它在安全补丁和某些类库行为上肯定比不过6u45。但在实际项目里版本选择从来不是选最好的而是选最匹配的。很多老项目的编译参数、第三方SDK的字节码依赖、发布脚本里写死的Java路径都是按某个特定update版本定下来的。你贸然换到更新的update未必会出大问题但也没人敢赌。1.2 什么场景会绑定这个老版本我在帮人处理环境时遇到过几种把版本锁死在1.6.0_06的情况。第一种是老的业务系统。国内不少保险、银行、政务类的项目十多年前用的是公司内部封装的框架这些框架在JDK更新时偶尔会出现类加载顺序变化或者某些内部API被移除的问题。为了线上环境稳定开发环境必须和线上完全一致于是整个团队都锁在同一个版本。第二种是老的桌面客户端。有些项目还在用Swing或SWT做客户端打包时依赖Java Web Start某些自定义类库编译时用了比较旧的javac版本如果更新JDK客户端的界面字体或控件行为会出现细微差异。第三种是最常见的公司里的构建脚本和CI配置把JDK路径写死了。比如一批老脚本里直接写set JAVA_HOMEC:\Java\jdk1.6.0_06你换成别的路径脚本就会报错。这种情况下机器上装一个指定路径的老JDK反而是最省事的解决办法。2. 下载安装包与系统环境检查2.1 安装包从哪里拿怎么核对老JDK的安装包在Oracle官方的Java Archive页面能找到地址就是oracle.com/java/technologies/downloads/archive这个入口。进入后要往下翻找到Java SE 6那一栏再从版本列表里挑1.6.0_06。页面需要登录Oracle账号没有账号的得先注册一个下载时还要勾选接受许可协议。实际维护工作中我不建议每次都在线下载。公司内部如果已经有了软件仓库或者公共网盘最好把jdk-6u6-windows-i586.exe这种安装包沉淀下来下次装直接取速度快还不依赖外部网络。无论从哪下载安装前一定要做文件校验用certutil命令生成哈希值和官方公布的对一下避免下载到被篡改的文件。certutil -hashfile jdk-6u6-windows-i586.exe SHA2562.2 Windows兼容性检查与现有Java环境清理JDK 1.6.0_06发布的时候Windows Vista和Windows Server 2008还是主流Windows XP也还在用。放到今天主流工作机大多是Windows 10或Windows 11虽然微软官方没有承诺兼容但实际装下来JDK 6的安装程序在Windows 10上基本能跑Windows 11上偶尔会弹程序兼容性助手选择“仍然运行”就行。在正式安装之前我习惯先做一次环境盘点尤其是那些已经装过JDK 8、JDK 17的机器。在命令行里执行java -version、javac -version、echo %JAVA_HOME%和where java把当前生效的JDK路径看清楚。很多时候所谓的“装不上”其实是老版本被新版本盖住了命令一直指向新JDK造成一种“安装失败”的错觉。如果机器之前装过其他版本的JDK新手可能会急着卸载。我的建议是先别卸等新JDK装好、环境变量调整完再判断。老机器上可能存在某些应用依赖原有JDK全卸了反而容易出现未知问题。3. 安装向导实操路径与组件如何选择3.1 自定义安装路径的小心思双击jdk-6u6-windows-i586.exe会进入一个纯Swing界面写的安装向导这个界面本身就很有年代感。安装向导提供了“典型安装”和“自定义安装”两个选项我强烈建议选自定义安装因为默认路径实在是太折腾了。JDK 6的默认安装路径是C:\Program Files\Java\jdk1.6.0_06中间带空格。对现代工具来说路径带空格问题不大但对老项目来说很多构建脚本、批处理文件在处理带空格的路径时经常出幺蛾子。老脚本写路径不规范、没加引号空格就会被当成分隔符导致找不到可执行文件。所以我一般会建一个干净的短路径C:\Java\然后把JDK装到这个目录下形成C:\Java\jdk1.6.0_06。路径里不带空格、不带中文、不带括号后续配置环境变量和写脚本都能省很多心。3.2 安装时组件怎么选装完怎么验证安装向导会让你选择组件包括开发工具、演示代码、公共JRE和源代码等。开发工具必须选这是javac和java命令所在的地方公共JRE建议也装上因为很多老项目直接双击jar包运行时依赖公共JRE的注册信息。演示代码和源代码按需选择。如果磁盘空间不紧张我通常会把源代码也勾上方便在IDE里直接查看JDK自带的类实现。安装过程后半段向导还会询问浏览器Java插件相关设置在现代浏览器里这东西基本没用了可以直接跳过。安装完成后别急着配置变量先看一眼目录结构是否完整。正常的C:\Java\jdk1.6.0_06下面应该有bin、lib、jre、demo、include、db这些子目录以及src.zip文件。关键是确认bin\java.exe和bin\javac.exe存在。如果连javac都没有说明刚才组件选择时没勾开发工具后面配置了也是白配。4. 环境变量配置写错一个地方全盘皆输4.1 JAVA_HOME、PATH、CLASSPATH的正确配置环境变量是JDK安装的重头戏老版本JDK比新版本更敏感因为很多老工具会同时读这几个变量。第一个是JAVA_HOME。在“此电脑”上右键选择“属性”进入“高级系统设置”点“环境变量”在系统变量里新建或者编辑。变量名填写JAVA_HOME变量值填写C:\Java\jdk1.6.0_06注意结尾不要带反斜杠也不要加上bin目录。有些教程会写成C:\Java\jdk1.6.0_06\多出来的反斜杠在某些老脚本拼接路径时会变成双反斜杠属于经典坑位。第二个是PATH。在系统变量里找到Path编辑它在最前面新增一行%JAVA_HOME%\bin。放在最前面这步很关键Windows系统执行命令时是按PATH顺序从前往后找的如果你机器上还有JDK 17JDK 17的bin路径排在前面你辛辛苦苦装的1.6.0_06就永远不会被用到。第三个是CLASSPATH。JDK 6时代经常会配这个变量常见写法是.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar开头的.代表当前目录老项目编译时经常需要从当前目录加载类。dt.jar和tools.jar是JDK 6编译运行时的两个基础库某些老框架会直接引用它们。需要说明的是这个变量在JDK 9之后就被移除了新JDK不需要配但既然是装1.6.0_06还是按老规矩来省得某些老编译器报奇怪的ClassNotFound异常。配置完环境变量后务必要重新打开一个新的命令行窗口。已经打开的cmd窗口或IDE进程不会自动刷新环境变量这也是“明明配好了但命令不生效”最常见的原因。4.2 系统里已有其他JDK时的优先级处理我个人比较推荐的顺序是先配老JDK再考虑新JDK。既然你这台机器是因为老项目才装1.6.0_06那全局环境变量就先指向它JDK 17这种高版本放到IDE里单独指定。环境变量有系统变量和用户变量两套Windows会先读取系统变量、再读取用户变量后面的值会覆盖前面的。如果你在用户变量里设置了JAVA_HOME指向JDK 17又在系统变量里设置了指向1.6.0_06最终生效的可能还是用户变量里那个。排查时发现改了系统变量却不起作用就去看看用户变量里是不是还有一层。5. 验证安装和多版本共存5.1 验证命令输出怎么看打开一个全新的cmd窗口依次输入三段命令来确认安装效果。echo %JAVA_HOME%如果输出是C:\Java\jdk1.6.0_06说明JAVA_HOME配置正确。java -version正确时会显示类似这样的信息java version 1.6.0_06 Java(TM) SE Runtime Environment (build 1.6.0_06-b02) Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)看到第一行的版本号是1.6.0_06而不是17或者1.8就说明当前生效的是老JDK。javac -version输出应该是javac 1.6.0_06如果javac命令报识别不了说明PATH里没有指向JDK的bin可能指向了单独的JRE路径。这是初学者常遇到的情况单独安装的公共JRE只有java命令没有javac所以java能用、javac不能用。5.2 IDE、Maven、命令行工具的版本切换全局环境变量设好之后还需要在开发工具里单独配置。Eclipse的处理方式是Window菜单里打开Preferences在Java这个分类下找到Installed JREs点Add选择Standard VM然后指定目录C:\Java\jdk1.6.0_06。继续在项目的Build Path里把JRE System Library切换过去或者在项目属性里把Java Compiler的Compiler compliance level调成1.6。IntelliJ IDEA的操作路径类似在File - Project Structure里选择SDKs新增一个JDK目录同样指向C:\Java\jdk1.6.0_06。还要注意老项目如果依赖老版本的打包方式在Settings里把Java Compiler的target bytecode version改成1.6。Maven有个坑需要特别注意。mvn命令在运行时默认使用环境变量JAVA_HOME指向的JDK。即使你在IDEA里设置了新的JDK如果命令行工具调的Maven是用旧的JAVA_HOME启动的Maven依然会用老JDK去编译。可以用mvn -version查看Maven当前所用的Java版本。如果需要在多个JDK之间来回切换我习惯在桌面放几个批处理脚本。比如切到老JDK时运行以下内容echo off set JAVA_HOMEC:\Java\jdk1.6.0_06 set PATH%JAVA_HOME%\bin;%PATH% java -version这个脚本只在当前cmd窗口生效不会影响系统全局配置避免了反复去改环境变量的麻烦。6. 老版本JDK在Windows上的常见问题与最后提醒6.1 javac不可用和版本冲突JDK 6在Windows上最经典的问题就是java命令正常、javac命令报错或找不到。这通常是因为PATH里排在前面的不是JDK的bin目录而是某个单独的JRE目录。单独装的JRE只有java.exe没有javac.exe所以java能运行编译就抓瞎。解决办法是把%JAVA_HOME%\bin调整到PATH最前面。另一个高频问题是在运行老项目时遇到UnsupportedClassVersionError。这个异常的含义是当前JVM版本太低无法启动用更高版本JDK编译的类。对应的版本编号是有规律的Java 1.2是46.01.3是47.01.4是48.0Java 5是49.0Java 6是50.0Java 7是51.0Java 8是52.0。如果看到major.minor version 50.0说明这个class是JDK 6编译的你当前运行环境必须至少是JDK 6反过来如果你用JDK 6跑JDK 8编译的class就会看到UnsupportedClassVersionError。遇到这个异常不要怀疑环境直接检查class文件的编译来源和当前JDK版本。6.2 乱码和控件类问题老JDK在中文Windows上还有一个经典问题就是控制台输出乱码。JDK 6时期Windows控制台默认编码是GBK如果程序里没显式指定文件编码一到中文环境就乱。排查时可以用-Dfile.encodingGBK参数临时调整运行编码但最根本的办法还是让项目代码在读写文件时明确指定字符集不要依赖系统默认。至于老一代Java Applet和浏览器插件现在的浏览器已经完全不支持了Chrome、Edge、Firefox都不再维护相关插件机制。如果你维护的项目还依赖浏览器里的Java控件这台开发机基本只能当成一个历史环境的兼容运行池别指望它能接入现代Web工作流。6.3 安全收敛建议最后必须说一句JDK 1.6.0_06是十几年前的版本漏洞实在太多Oracle早就停止了对Java 6的公开维护。2020年之后连付费的商业更新也逐渐收窄了覆盖范围。所以它只适合放在隔离的开发环境、内网环境或者虚拟机里用来编译老代码、复现历史问题绝对不要用它去运行暴露在公网上的服务。如果需要对外提供服务还是要想办法把应用迁移到更高版本JDK用容器虚拟化或者升级中间件来解决兼容问题。我在实际维护老项目时还有个习惯装完环境后打包一份干净的JDK目录和一份环境变量配置截图放在项目文档里。老项目的环境问题往往不是装一次就完事过几个月换台电脑又要重来一遍。把路径、变量、版本信息固定下来下次再有人问“怎么装JDK 1.6”直接把这份笔记甩过去就够了。本文还有配套的精品资源点击获取

最新新闻

日新闻

周新闻

月新闻