广州定制网站建设,常州网站定制,前端机构培训,为什么招聘网站做不大对于classpath作用的解释在《Thinking in Java》中有如下解释#xff1a; Java 解释器的工作程序如下#xff1a; 首先#xff0c;它找到环境变量CLASSPATH#xff08;将Java 或者具有Java 解释能力的工具——如浏览器——安装到机器中时#xff0c;通过操作系统进行设定 Java 解释器的工作程序如下 首先它找到环境变量CLASSPATH将Java 或者具有Java 解释能力的工具——如浏览器——安装到机器中时通过操作系统进行设定。CLASSPATH 包含了一个或多个目录它们作为一种特殊的“根”使用从这里展开对.class 文件的搜索。从那个根开始解释器会寻找包名并将每个点号句点替换成一个斜杠从而生成从CLASSPATH 根开始的一个路径名所以package foo.bar.baz 会变成foo\bar\baz 或者foo/bar/baz具体是正斜杠还是反斜杠由操作系统决定。随后将它们连接到一起成为CLASSPATH 内的各个条目入口。以后搜索.class 文件时就可从这些地方开始查找与准备创建的类名对应的名字。此外它也会搜索一些标准目录——这些目录与Java 解释器驻留的地方有关。
classpath是什么? 它的作用是什么 classpath是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文件。如果没有找到就会报错
CLASSPATH有点像c\c编译器中的INCLUDE路径的设置哦是不是当c\c编译器遇到include iostream这样的语句它是如何运作的哦其实道理都差不多搜索INCLUDE路径检视文件
当你自己开发一个package时然后想要用这个package中的类自然你也得把这个package所在的目录设置到CLASSPATH中去
CLASSPATH的设定对JAVA的初学者而言是一件棘手的事。所以Sun让JAVA2的JDK更聪明一些。你会发现在你安装之后即使完全没有设定CLASSPATH你仍然能够编译基本的JAVA程序并且加以执行 可以看出CLASSPATH 里能包含大量备用的搜索路径。然而使用JAR 文件时要注意一个问题必须将JAR文件的名字置于类路径里而不仅仅是它所在的路径。所以对一个名为grape.jar 的JAR 文件来说我们的类路径需要包括
CLASSPATH.;D:\JAVA \LIB;C:\flavors\grape.jar
个人理解说明其实从上面可以看出如果你用记事本来写java程序在Window下并用cmd命令窗口中输入javac,java命令如果你的代码中用到了其它的jar或者你自己的写的类但又和你的主程序没在一个包下这时你就要在classpath中设置你要用到的jar或者自己写的类的路径让Java在编译器可以找到你要用的东西如上面例子所示。 在我们用一些工具时如eclipse中我们可以把一些Jar包什么的添加进来然后搜索路径的事工具帮我们做了所以不用在手动加进去。所以在eclipse实际的开发中没有用到系统配置的classpath而是自己会生成一个.classpath的文件只有用cmd javac 编译时会用到系统的classpath这也可以改变见下。 classpathc:\test就表示执行运行命令时去c:\test文件夹去找需要被执行的class文件
在java5之前该路径是不能指定当前路径的,除非这样设置:classpath.;c:\test,就表示先在当前目录找class文件,要是没找到就到c:\test去找;(当一个变量有多个值时,多个值之间是有英文的分号隔开)设置从当前所在目录查找(java1.5后默认):set classpath.
CLASSPATH环境变量。作用是指定类搜索路径要使用已经编写好的类前提当然是能够找到它们了JVM就是通过CLASSPATH来寻找类的.class文件。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中当然当前目录“.”也必须加入到该变量中。 javac -c 路径 可以指定class文件存放目录
java -cp 路径 可以指定要执行的class目录 (1).何时需要使用-classpath当你要编译或执行的类引用了其它的类但被引用类的.class文件不在当前目录下时就需要通过-classpath来引入类
(2).何时需要指定路径当你要编译的类所在的目录和你执行javac命令的目录不是同一个目录时就需要指定源文件的路径(CLASSPATH是用来指定.class路径的不是用来指定.java文件的路径的)
eg: 比方有一个Application用到了java.lang.String和com.shinechina.MyClass我自己写的这两个类。
版本1
package com.shinechina;
public class MyClass
{public static void main(String args[]){String str 版本1 hello, welcome to chinaasp java 技术;System.out.println(str);}
}
版本2 package com.shinechina;
public class MyClass{public static void main(String args[]){String str 版本2hello,welcome to chinaasp java 技术;System.out.println(str);}
} 现在我要运行它了
java com.shinechina.MyClass
现在问题来了
Java怎么知道到何处找呢 他到底该怎么办
假定版本一在 c:\mylib\com\shinechina\MyClass.java
假定版本二在 d:\mylib\com\shinechina\MyClass.java
注意不要忘了编译成class文件吆, java文件是不能执行的
cd c:\mylib\com\shinechina
javac *.java
cd d:\mylib\com\shinechina
javac *.java
有了
他先到机器的CLASSPATH去找假设是windows系统 c:\mylib;d:\mylib;d:\jdk1.2.2\lib\rt.jar;
或unix系统 /home/local/:/usr/local/:/usr/local/jdk1.2.2/lib/rt.jar。好 c:\mylib下他找到了com目录有戏 又往下找又有shinechina目录目录下找到了MyClass.class, Ok 就是他了至于d:\mylib我的版本2的MyClass他就不理会了至于String是在rt.jar压缩包中待会再讲他
执行的结果就是
版本1 hello, welcome to chinaasp java 技术
反过来d盘的路径在c:之前执行的结果就是
版本2 hello, welcome to chinaasp java 技术
依次类推 只有在类路径上第一个找到的才会执行你要控制他执行那一个须如此:
java -classpath d:\mylib;%classpath% com.shinechina.MyClass
执行的结果就是
版本2 hello, welcome to chinaasp java 技术
开发环境中的执行就是这样总有一个地方指定类路径的。
注意开发环境往往不去读系统路径 这也就是在外面运行的东东挺溜的进了开发环境就死菜的原因喽。
比如说jbuilder, jdevoloper从菜单project-project properties...-paths标签-Add...-添加定义好的library点ok或者new-输入name和classpath-ok。这个东东就被添加到了classpath中运行时可在message view中看到
再比如说visualAge for java , 点中你要运行的类-鼠标右击选中特性-类路径标签 1、-编辑-全选好开发环境中的所有类都能找到了。
2、立即计算只选中你需要的类 如果有用class.forName之类通过程序显式装载的类的话需要自己从编辑中手工家入了 开发环境每能力帮你算出来了如果内存没有问题的话直接编辑-全选更方便吆
3、如果你的类并不想引入开发环境的话点中添加额外路径编辑下面的一个 我不喜欢这样 就不详细介绍了
高手的话直接用jdk, 那么只好麻烦你要么加到系统classpath中unix下为$CLASSPATH, 要么编译运行时显式指明classpath
下面介绍一个初学者最容易犯的错误
还以上节介绍的例子
假定版本一在 c:\mylib\com\shinechina\MyClass.java
编译后c:\mylib\com\shinechina\MyClass.class
怎么指定classpath呢
常见毛病
1、c:\mylib\com\shinechina\
2、c:\mylib\com\
正确
1、c:\mylib\
2、c:\mylib classpath的重要性
用eclipse开发项目时对每个项目都需要配置classpath具体怎么配只需要在项目上鼠标右键build path.然后一步步操作你配完之后打开你的项目所在的workpace,打开你的项目文件里面有一个.classpath文件你打开这个文件之后就会看到你之前在eclipse中build path的结果。比如我在项目中加入了一个我先前自己配置的User Library名字叫做MysqlJDBCDriver 加完之后在我的项目的.classpath文件中多出了一条classpathentry kindcon pathorg.eclipse.jdt.USER_LIBRARY/MysqlJDBCDriver/
我认为项目是独立于电脑环境变量的classpath的,每一个项目都需要它特定的classpath,所以在eclipse开发的时候每一个项目都会有一个.classpath文件ps为什么每个项目需要自己的classpath因为每个项目都需要引入自己特定的类库而电脑环境变量的classpath是通用的你不可能让你的所有项目都只是使用电脑环境变量classpath中设置的这几个类库吧 我觉得.classpath独立于电脑的classpath还有一个重要的原因当你最后做成jar包提供给用户的时候用户想要运行这个jar你不能奢求用户的电脑中的classpath有你当前引用包的路径因为用户的系统是干净的所以我们需要把我们需要引用的包build到.classpath中