黑马程序员技术交流社区

标题: path 与 classpath ? [打印本页]

作者: weimoliang    时间: 2014-5-13 19:17
标题: path 与 classpath ?
本帖最后由 weimoliang 于 2014-5-14 06:39 编辑

path 与classpath有啥不同呢?今天在网上也找了好多理解的不是很透彻!


什么时候需要配置 这个两个呢? 出现啥情况需要配置 呢?

作者: 创造命运    时间: 2014-5-13 19:35
1. PATH环境变量。作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。


2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPATH来寻找类的.class文件。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
javac -c  路径 (可以指定class文件存放目录)
java -cp  路径  (可以指定要执行的class目录)
它是javac编译器的一个环境变量。
它的作用与import、package关键字有关。
当你写下improt java.util.*时,编译器面对import关键字时,就知道你要引入java.util这个package中的类;但是编译器如何知道你把这个package放在哪里了呢?所以你首先得告诉编译器这个package的所在位置;如何告诉它呢?就是设置CLASSPATH啦 。 如果java.util这个package在c:\jdk\ 目录下,你得把c:\jdk\这个路径设置到CLASSPATH中去!当编译器面对import java.util.*这个语句时,它先会查找CLASSPATH所指定的目录,并检视子目录java\util是否存在,然后找出名称吻合的已编译文件(.class文件)。如果没有找到就会报错!



3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。


作者: 温水煮青蛙    时间: 2014-5-13 20:16
path 路径,是java编译时需要调用的程序(如java,javac等)所在的地方classpath 类的路径,在编译运行java程序时,如果有调用到其他类的时候,在classpath中寻找需要的类。
作者: 官珺伟    时间: 2014-5-13 20:27
本帖最后由 官珺伟 于 2014-5-13 20:30 编辑

为什么需要配置path?在cmd命令中输入一个指令时先在当前文件目录下查找命令文件,path的环境变量中依次
查找命令文件,以最先找到的为准,因为配置了path,所以在cmd命令下可以直接输入java和javac等jdk的命令。
什么时候需要classpath?jvm在查找class文件时,如果没有设置classpath会在当前路径查找,设置classpath后,仅在classpath
路径下查找class文件。


作者: 倪大大    时间: 2014-5-13 22:46
path是让你的电脑知道java的执行指令在什么地方,让他能去执行 javac等编译指令
而 classpath 就是告诉电脑 你java程序中需要用到的类在什么地方
比如你在程序中调用 String类,电脑怎么知道String是什么?你又没定义过,所以需要提前告诉电脑这个String类是什么
作者: 彭飞    时间: 2014-5-13 23:40
不设置path   每一次编译你编写的程序的时候都得调出你安装JDK的目录, 什么盘下什么目录下什么什么的,
每一次使用都要调用,就非常麻烦

所以path配置就诞生了,一次设置,终身使用,是你不二的选择。

而classpath 随着时代的进步,现在JDK已经不用配置这个东东了。

classpath 应用更多的时候,应该就是临时需要的时候
比如你搞定一个项目,安装到到客户的电脑上,你没必要给客户电脑装一个JDk吧,
但是你又得用呀, 好了,装你U盘里,
然后用的时候,设置下临时classpath 搞定了,

然后客户也会觉得你很牛叉的说,呵呵。
作者: 蛤蟆太康    时间: 2014-5-14 00:05
简单来说:配置path可以一劳永逸地解决自己电脑编译和运行Java文件的方法。因为Java是跨平台的,假设自己的Java程序需要在其他电脑上编译和运行,那么配置别人电脑的path可能会给别人带来不便,所以只需要在控制台配置classpath就OK了,配置一次只能用一次,当关闭控制台再打开,刚才配置的classpath就失效了,所以,配置classpath不会给别人的电脑带来任何不便,还能解决问题。




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