黑马程序员技术交流社区

标题: 关于classpath的一些疑问? [打印本页]

作者: cleader    时间: 2014-9-10 22:08
标题: 关于classpath的一些疑问?
本帖最后由 cleader 于 2014-9-10 22:47 编辑

同学们:        我在看自学视频第78集的时候 我有点糊涂了,毕老师说在DOS中set classpath=.;c:\myclass  就可以让javac、java在本地和myclass执行,如果没有“.”的话就只能在myclass里执行。 毕老师在这一集里举了一个例子,两个class文件 在两不同的位置,其中一个在myclass文件夹里  另一个在本地而且有它的java文件。  第一次演示的时候是这样设置的set classpath=c:\myclass 然后执行javac 编译通过,但是java运行出错。第二次set classpath=.;c:\myclass 这一次多设置了一个点 现在javac和java都通过了。

        我不明白的地方是为什么第一次设置的时候javac可以通过,java却出错了(为什么javac可以执行本地的,java就不能执行本地的)。难到classpath对javac和java的要求不一样?
        请高手指点,谢谢!

作者: fantacyleo    时间: 2014-9-10 22:21
这就是java比较坑爹的一面了。它在编译时不强制你的源文件和class文件在文件系统中的位置和源代码中写的package语句保持一致。但却在运行时按package指定的文件夹结构去搜索class文件
作者: cleader    时间: 2014-9-10 22:26
fantacyleo 发表于 2014-9-10 22:21
这就是java比较坑爹的一面了。它在编译时不强制你的源文件和class文件在文件系统中的位置和源代码中写的pac ...

十分感谢!交个朋友吧,我在论坛加你了
作者: Fightin黑马    时间: 2014-9-11 16:41

path环境变量
为了在任何位置都能使用javac、java命令,需要配置path环境变量;
系统会先在当前路径去找,如果没找到就去path环境变量中配置的路径去找;
配置path环境变量的两种方式;
classpath环境变量
为了使java工具在任何位置都能找到class 文件,可以将class文件的路径配置在classpath环境变量中;
java工具会先找classpath,如果没有再找当前目录;如果想让java工具先找当前目录,可以在classpath前加“.”;一般开发中不会去配置classpath环境变量,以防多个个文件夹存在同名.class文件导致运行结果错误





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