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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

刘鹏

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 刘鹏 初级黑马   /  2012-5-28 19:39  /  2972 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

classpath环境变量是现在指定目录下面找,找不到然后再去当前目录下找。
在C:下放置Test1
C:\>javac Test1.java

C:\>java Test1
洲洲
运行结果:洲洲。c盘内生成一个class文件。

在d:同样放置一个Test1.

D:\>javac Test1.java

D:\>java Test1
我的地盘我做主,gungungun.

D:\>
在D盘里运行C的Test1

D:\>javac Test1.java

D:\>java Test1
我的地盘我做主,gungungun.
删除C盘里的Test1生成的class文件。
D:\>set classpath=c:\

D:\>java Test1
Exception in thread "main" java.lang.NoClassDefFoundError: Test1
Caused by: java.lang.ClassNotFoundException: Test1
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: Test1.  Program will exit.
结果为 错误。
D:\>set classpath=c:\;

D:\>java Test1
我的地盘我做主,gungungun.
则运行结果为D盘里的Test1结果。

classpath=c:\;d:\ 在classpath运行的时候是先找C盘在找D盘,如果找到C盘就不再继续找D盘。
"."代表当前目录盘。
path 环境变量的运行则是首先在当前目录下找,没找着再去path环境变量里找。
classpath环境变量是现在指定目录下面找,找不到然后再去当前目录下找。
path的具体运行细节,不懂,只知道他们相反  ,可有具体例子给发一个看看。
classpath菜鸟的理解不知道对不对,不对请指教。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
我的总结:

Path:在windows命令提示符窗口中输入指令后,系统首先在当前目录中查找该命令,如果没找到,就跳转到系统变量path中预先设置的路径中查找。Jdk的bin文件夹中存放了许多常用的开发工具执行文件,为了在命令提示符窗口便捷的调用这些工具,需要将bin的路径添加到系统变量path中。

Classpath:classpath和path的功能相似,不过classpath中的路径值不是提供给操作系统的,而是提供给java执行环境的。Java执行系统可以在classpath中预先设置的路径中找到所要执行的java程序所需要的类或者包。

希望对你有帮助

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
path的作用是:它能按照指定命令搜索路径,例如:当我们在命令下面执行javac和java程序命令时,它会到path环境变量所定义好的的路径中查找能否找到相应的命令程序。
所以path环境变量可以使我们在任何目录下执行提前定义好的程序命令。

classpath的作用:指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过classpath来寻找类的。
我们可以通过配置好的classpath环境变量在任意路径下运行classpath定义好的路径下的java文件。
回复 使用道具 举报
你写了这么多真是辛苦,总结一下就两句话:
1.path用来配置java运行环境(就是那个bin目录)
2.classpath用来告诉虚拟机加载类时搜索的路径,有该类就运行,没有就报错。
回复 使用道具 举报
path 路径:是java编译时需要调用的程序(如java,javac等)所在的地方
classpath 类的路径:在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类。
回复 使用道具 举报
lz,设置path跟设置classpath一点关系都没有
设置path,是为了在dos窗口下的任何目录都能javac 和java

而设置classpath,就是设置java虚拟机加载class文件的位置,你暂时就这么理解。

我开始初学的时候一窍不通,baidu了n久也得不到答案,当时还纳闷为什么要设置path了,其实暂时这么理解:一般我们双击exe,都会打开应用程序,可是点击java.exe没用啊,其实想要运行java代码,需要java和dos的集合体,两者关联了才能运行。所以要设置path把他们连接起来,然后通过dos来运行,而不是用java.exe运行。classpath不暂时可以不管,因为初学者用不着,而当你用着的时候,你也就懂了。网上哪些所谓的高手一开始就设置什么什么home,没用!!!!!初学着只会云里雾里的。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
刘鹏 初级黑马 2012-5-28 22:21:50
7#
以前在网上看到一些培训的老师讲的是 path在环境变量里面设置的bin的地址位置,classpath设置的是java程序运行的目录地址。在我印象里classpath设置是非常简单的,把要运行的java文件地址设置进变量里就欧了,但是传智老师讲最麻烦的就是classpath变量的设置,这我才感觉跟我想的真的是不一样,老师讲的才有深度,很有意思。可能是菜鸟才开始多想了一点。。。笨了一点。。。
回复 使用道具 举报
感觉有的地方楼主说的跟视频一样,可以这么理解.
path是跟操作系统中命令执行有关的变量.
而classpath只是在你运行class类文件时才有关的变量.
我总结了一下path和classpath的作用,希望对你有帮助.
        Path环境变量:
        作用是指定命令搜索路径,在DOS命令行下下面执行命令,如javac编译java程序,
它会到path变量指定的路径中查找看是否能找到相应的命令程序.我们需要把jdk安装到目录下的bin目录增加到现有的path变量中,
bin目录中包含经常要用到的可执行文件如javac/java/javadoc等,设置好path变量后,就可以在任何目录下执行javac/java等工具了.
       
        Classpath环境变量:
        作用是指定类搜索路径,要使用已经编写好的类前提是能够找到他们,jvm就是通过classpath来寻找类的.
我们需要把jdk安装目录下的lib子目录中的dt.jar和tool.jar设置classpath中,当然,当然目录"."也必须加入到该变量中.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马