由安装JDK想到的

装了这么多年jdk,我发现网上很多安装jdk的文章对于某些问题都讲的不够透彻。 我想到如下几点:

1.创建PATH这个 用户变量。 众所周知, windows命令行是不区分大小写的, 变量名也是, windows的 系统变量里已经内置了Path变量, 所以如果在 系统变量里显然没必要新建个PATH变量吧,可以在原有Path里的值里直接添加。而 用户变量里没有Path变量, 所以可以添加个Path变量, 其实无论这个登录的user在哪个变量添加这个Path变量, 保存完配置后, 新开个cmd窗口, 输入path,输出的值里都包含系统变量里的Path值。 所以并不一定非要在用户变量里创建PATH这个环境变量, 直接编辑系统变量里的Path也是可以的。 关于系统变量和用户变量的区别, 这个哥们的文章说的很详细,大家可以看看 http://www.cnblogs.com/zhizouxiao/archive/2012/11/03/2753077.html, 简单说就一句话, 一个user登录系统后他的path会既包括系统变量里的path值也包括他自己创建的用户变量里path的值, 但系认变量path的值还是会被加在用户变量path值的前面。

2.既然在用户变量里添加PATH这个变量, 和编辑系统变量里Path的值不就一样了么, 还有什么可说的? 效果的确是一样, 但对于windows下installer.exe版的JDK 6(包括更高版本)来说, 还真需要注意一点。就是如果是编辑系统变量里Path值, 最好是把JDK和jre bin的路径放到已有值的最前面,别忘了加隔离符;因为installer.exe版的JDK 6安装时回自动拷贝一个java.exe和javaw.exe等到C:\Windows\System32下, 而这个目录就默认存在于系统变量的Path值的最前面, 这就是为什么安装完installer版的jdk, 不用配置任何环境变量, 打开一个cmd窗口直接输入java回车, 就能看到java.exe输出的原因。 而系统会按照path中值的顺序先找到system32下的java.exe,如果你系统里不同路径下有两个版本的jdk, system32下的java.exe和另一个路径下的java.exe(这个被配置在用户变量或系统变量path值的后面)版本高低不一致, 编译和运行千万不能用两个高低不同的版本的jdk. 你也许会在编译时用了高版本的java.exe, 而运行时用了低版本的java.exe, 这样就可能出现bad version class的EXCEPTION. 所以总结一下, 如果你的系统里有高低不同版本的jdk, 千万注意编译时要注意是否用的system32下的java.exe, 而这个java.exe与你期望的运行时版本是否一致。最后建议大家即使在windows上也下载zip的JDK, 这样就可以避免拷贝java.exe到system32下的问题。

3.最后说下网上很多配置jdk是否成功就直接输入java -version.这也是不正确的。前面第二点已经讲了, 从JDK 6以后,windows installer版的jdk默认就拷贝到system32下, 所以不做任何配置显然也是可以有java -version输出的。这并不能作为JDK是否配置成功的标志。JDK配置还包括JRE下的bin和lib, 而这些路径是否配置过显然不能仅以java -version作为标志了。举个例子, 在配置完ant后, 仅配置JDK而没有配置JRE的结果就是, 直接在cmd里输入ant回车就会提示tool.jar找不到。关于JRE和JDK的关系这个哥们的文章讲的很详细, 以后慢慢研究 http://xinklabi.iteye.com/blog/1788780

你可能感兴趣的:(jdk)