A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潘星 中级黑马   /  2012-7-7 17:53  /  2476 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 潘星 于 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呢?求各位指点下小弟啊

6 个回复

正序浏览
是因为没有将JDK安装后所提供的javac 等工具程序的目录地址填写到系统环境变量的path值里面。在调用javac时又正好没在它的目录下,在当前目录里没有这个工具程序,所以报错。
回复 使用道具 举报
path环境变量作用是指定命令搜索路径,也就是你编译*.java文件时搜索需要用到path环境变量,并且搜索顺序是先在当前目录搜索,再按你定义的path环境变量的搜索路径搜索。
classpath环境变量作用是指定类搜索路径,也就是你运行*.class文件时搜索需要用到classpath环境变量,并且搜索时优先搜索classpath环境变量的所在路径,然后再搜索当前目录。如果你在定义classpath环境变量时后面不加“;”,那么只搜索classpath路径而不搜索当前目录,一般定义classpath环境变量时都不加“;”,这样搜索更准确,不会出现执行错误的class文件。
回复 使用道具 举报
终于明白了,谢谢大家!
回复 使用道具 举报
classpath是专为.class文件设置的路径。所以你找不到.java文件。
回复 使用道具 举报
本帖最后由 陈冲 于 2012-7-7 18:09 编辑

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

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

回复 使用道具 举报
classpath 指定的是 类加载的路径,也就是 用 java 命令执行程序时, 会按照那个路径去找class文件。

javac 是编译源程序的,你要切换到源程序所在的目录 然后执行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马