关于jdk环境变量配置问题的解决

今天实验室换了新电脑,安装了win8新的系统,所以很多的软件需要重新安装。我又再次安装了jdk1.6并且配置了环境变量,在测试的时候出现了一些问题。测试了一个很简单的程序。在javac编译的时候没有问题,但是在执行java的时候,反复出现了Exception in thread main java.lang.NoClassDefFoundError. 我刚开始以为是文件名称和类的名字不一致所引起的,后来不断确认发现没有问题。然后仔细查看了环境变量的配置,发现时classpath路径出现了问题。classpath完整的路径为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar%JAVA_HOME%\lib\dt.jar。(注意要加入 " . "表示当前路径)

我在设置时并未将jar包导入 ,导致发生错误。然后加入jar包以后,并未加入 " . ",结果还是发生了错误,所以必须要指明当前的路径用符号  .  来表示。 记得此一次配置环境变量的时候,隐约在classpath后面加上了一个  .   。并没有理解是什么意思,现在终于明白了,这是:当前路径的意思,必须要指明。所以直接在classpath后面配置一个 . 也是正确的。不加 . 的意识是编译后的class文件不在当前目录下,自然无法用命令java执行。

      完整的过程如下:

       一:点“新建”,然后在变量名写上JAVA_HOME,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才安装的路径“C:\jdk1.6”。       ( 注:如果安装的路径不是磁盘C或者不是在jdk1.6这个文件夹,可对应修改。以下文字都是假定安装在C:\jdk1.6里面。) 
    二:其次在系统变量里面找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则变量值为“.;%JAVA_HOME%\bin”,(其     中“%JAVA_HOME%”的意思为刚才设置JAVA_HOME的值),也可以直接写上“C:\jdk1.6\bin” 
    三: 最后再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。其值为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar (要加.表示当前路径)”,与相同“%JAVA_HOME%有相同意思” 

      下面是我在网上查找的关于path和classpath的问题,总结如下:

      1,设置JAVA_HOME: 
一、为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串; 
二、归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃! 
三、第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 以后用JAVA久了就会知道, 要是某个软件不能正常使用, 不妨想想是不是这个问题. 

2,设置CLASSPATH: 
这是一个很有趣,当然也比较折磨初学者的问题, 这个变量设置的目的是为了程序能找到相应的".class"文件, 不妨举个例子: 你编译一个JAVA程序---A.java, 会得到一个A.class的类文件,你在当前目录下执行java A, 将会得到相应的结果(前提是你已经设置CLASSPATH为"."). 现在, 你把A.class移到别的目录下(例如:"e:\"), 执行java A, 将会有NoClassDefFindError的异常,原因就是找不到.class文件, 现在你把CLASSPATH增加为:".;e:\"再运行java A, 看看会有什么结果~~:)~~~, 一切正常, java命令通过CLASSPATH找到了.class文件! 

3,设置PATH: 
道理很简单, 你想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗, 当然不会, 于是, 你可以选择把 %JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令了.(当你在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序, 并且执行.

        那么jar包的作用是什么呢?很简单,就是一群很牛叉的人写的类库集,所以需要我们去导入,使用就可以了。那么jdk中的bin是做什么用的呢?bin 是binary的缩写,里面存放了很多的jdk开发工具的可执行文件,这些可执行文件均被编译为二进制文件的可执行文件,所以叫做了了bin。里面有很多的编译器和开发工具。

       lib目录是library的缩写,意思是java的类库和类文件库,是开发所必须要的。

       jre是java runtime environment的缩写,是指java的运行环境。包括了java的虚拟机。运行时的类包和java应用启动器,但不包含开发环境中的开发工具。 它下面有bin子目录,包括平台所用工具和库存的可执行文件和DLL文件;lib子目录包括java运行环境的代码库、属性设置和资源文件,默认安装目录,安全管理。 

     include的作用是什么呢?包含了C 的头文件,支持java本地接口与java虚拟机调试程序接口的本地编程技术。

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值