黑马程序员技术交流社区

标题: 关于设置环境变量classpath的一点小问题 [打印本页]

作者: 潘星    时间: 2012-7-7 17:53
标题: 关于设置环境变量classpath的一点小问题
本帖最后由 潘星 于 2012-8-7 23:00 编辑

我今天在我的电脑-属性-高级环境变量里面设置了classpath=D:\wodejava2\day1,在这个目录下有2个文件,一个是Demo.java的文件,另外一个则是已经编译好了的number2.class的文件,然后我打开DOS命令行在其他目录下输入java number2,有运行结果,但是输入javac Demo.java时电脑提示说找不到文件Demo.java,到底是怎么回事呢?   
为什么可以运行number2.class,但是却不能编译Demo.java呢?求各位指点下小弟啊
作者: 丁二跃    时间: 2012-7-7 17:57
classpath 指定的是 类加载的路径,也就是 用 java 命令执行程序时, 会按照那个路径去找class文件。

javac 是编译源程序的,你要切换到源程序所在的目录 然后执行
作者: 陈冲    时间: 2012-7-7 18:07
本帖最后由 陈冲 于 2012-7-7 18:09 编辑

设置了一个路径为LLASSPATH,就可以在任何路径下使用java命令执行CLASSPATH路径下的.class文件。所以如果不设置任何路径为CLASSPATH的话,就只能在想要运行的.class文件的当前路径下执行java命令。
但是,编译的时候并不会按照设置的CLASSPATH查找*.java文件,如果你不想改变目录,还想要编译特定目录下的*.java文件时,你应该输入这样的cmd命令:
\>javac D:\wodejava2\day1\Demo.java

下面是我的代码的编译情况,可以参考一下


作者: 朱东方    时间: 2012-7-7 18:20
classpath是专为.class文件设置的路径。所以你找不到.java文件。
作者: 潘星    时间: 2012-7-7 18:35
终于明白了,谢谢大家!
作者: 李照飞    时间: 2012-7-7 19:11
path环境变量作用是指定命令搜索路径,也就是你编译*.java文件时搜索需要用到path环境变量,并且搜索顺序是先在当前目录搜索,再按你定义的path环境变量的搜索路径搜索。
classpath环境变量作用是指定类搜索路径,也就是你运行*.class文件时搜索需要用到classpath环境变量,并且搜索时优先搜索classpath环境变量的所在路径,然后再搜索当前目录。如果你在定义classpath环境变量时后面不加“;”,那么只搜索classpath路径而不搜索当前目录,一般定义classpath环境变量时都不加“;”,这样搜索更准确,不会出现执行错误的class文件。
作者: 龚建锋    时间: 2012-7-7 21:32
是因为没有将JDK安装后所提供的javac 等工具程序的目录地址填写到系统环境变量的path值里面。在调用javac时又正好没在它的目录下,在当前目录里没有这个工具程序,所以报错。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2