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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 灵界 中级黑马   /  2015-5-29 19:26  /  1271 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 灵界 于 2015-5-29 19:46 编辑

dos在任意目录下运行javac时先找当前目录再找path,而dos中java调用JVM在任意目录下运行类文件时先找classpath再找当前目录,这句话正确与否?麻烦各位指点一二。

17 个回复

倒序浏览
本帖最后由 fecuznmn 于 2015-5-29 19:40 编辑

所答非所问,编辑了


回复 使用道具 举报
系统先在系统变量的PATH里寻找,如果你用户变量里自定义了一个PATH,随后会在里面寻找
回复 使用道具 举报
nbcallum 发表于 2015-5-29 19:38
系统先在系统变量的PATH里寻找,如果你用户变量里自定义了一个PATH,随后会在里面寻找 ...

那是否意味着毕老师所讲是错的,以下是毕老师PPT原话:
当前执行的程序(指javac.exe)在当前目录下如果不存在,windows系统
会在系统中已有的一个名为path的环境变量指定的目录中(指系统变量)查找。
回复 使用道具 举报
dos窗口下运行javac(jdk提供的开发工具),首先是会找当前目录下是否有javac.exe这个工具,如果当前目录中有,就不再去电脑属性中的系统变量中的Path变量中去寻找,这个Path变量时设置的是一些应用程序的路径,所以javac.exe在当前目录中找不到的时候就会去这个Path变量中去查找。我们通过配置Path变量,可以使javac.exe在任何目录下均可以访问到,这样就可以在任何目录下调用javac去编译.java文件了。dos中java调用JVM,可以在任何目录下运行类文件,因为我们已经配置好了Path变量,可以找到java.exe。所以我们会首先通过类路径(classpath)去查找我们要执行的类文件放在哪个路径下,如果在classpath下没找到,且在classpath变量的末尾加了分号,这是虚拟机会再到当前目录下去找类文件,不加是不会去当前目录下查找的。
回复 使用道具 举报
灵界 发表于 2015-5-29 19:54
那是否意味着毕老师所讲是错的,以下是毕老师PPT原话:
当前执行的程序(指javac.exe)在当前目录下如果不 ...

也可能毕老师说的和我意思一样。。总之绝对是现在系统变量的Path进行寻找的,我试验过,我把新的JDK路径定义在了用户变量,但是系统变量里的JDK路径我没有更新,还是老的,你可以自己试一下,用java -version看下版本就知道了
回复 使用道具 举报
灵界 中级黑马 2015-5-29 20:02:14
7#
hzw@ql 发表于 2015-5-29 19:56
dos窗口下运行javac(jdk提供的开发工具),首先是会找当前目录下是否有javac.exe这个工具,如果当前目录中有 ...

谢谢解答,我就是有点混,一个是先找当前再找path,一个是先找classpath(加分号)再找当前,怎么才能一下记住
回复 使用道具 举报
hzw@ql 中级黑马 2015-5-29 20:17:51
8#
找jdk先找当前,再找Path,这个是不好记,但是你可以记住classpath,这个是找.class文件的,这个找的过程一般是很严格的,不会首先到当前目录中找,因为如果当前目录下存在一个同名的.class,那就悲剧了,这样的错误很难发现。所以我们设置classpath变量的时候,末尾不加分号,分号就是代表又要在当前目录下查找。在找完前面所有的classpath变量都没有找到所需要的类文件,如果末尾有分号就在当前找,这个classpath变量值的顺序顺序可以得出,先找classpath变量,再找当前路径。这个记住了,然后Path你记住和classpath变量相反即可。
回复 使用道具 举报
关于path和classpath也弄不太懂,求高手解答
回复 使用道具 举报
hzw@ql 发表于 2015-5-29 20:17
找jdk先找当前,再找Path,这个是不好记,但是你可以记住classpath,这个是找.class文件的,这个找的过程一 ...

非常感谢~~
回复 使用道具 举报
:o 这是一个很纠结的问题,我也说不清
回复 使用道具 举报
classpath 尽量别配置,用处不是很大.
回复 使用道具 举报
对啊,这句话是对的吧.
回复 使用道具 举报
帅。。。。。。。。。。。。。。。。
回复 使用道具 举报
新人报道,热血黑马
回复 使用道具 举报
path是系统的  当然是系统优先了
回复 使用道具 举报
只是简单的环境变量配置。这个其实了解就可以,以后开发基本都是工具开发。这东西就是个运行费环境没必要纠结
回复 使用道具 举报
前半句对,后半句错,先查找classpath设置的路径,如果classpath路径中设置了;则会继续在当前目录查找,不设置; 则结束查找
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马