用例子解释:如何设置CLASSPATH(Java)

原创 2015年12月09日 00:22:09

设置CLASSPATH的目的是让Java执行环境找到指定的Java程序(也就是.class文件)

 

Java程序如何找到并引用所需要的类?

 

1.利用环境变量CLASSPATH。CLASSPATH中定义了很多根目录。运行程序时Java解释器只从这些根目录开始查找一个Java程序用到的类,即根目录和import指出的子目录 。例如,需要从当前目录查找,则需要加入"."。


2.可以把包中的所有.class文件打包为一个jar文件,然后在CLASSPATH中加入该文件的路径。


关于打包:

例如我现在C:\myproj\classes\X\Y下有A.class和B.class,我要打包(内部包含子目录信息)成food.jar

就要这样写:


这样,food.jar就会生成在C:\myproj\classes\下

当java程序中要用到A类的时候可以import X.Y.A

CLASSPATH的设置就是C:\myproj\classes\food.jar


3.可以在编译和运行时加入classpath参数指出所需要的包和根目录:

C:>javac -classpath c:\java\PackJar\food.jar;c:\java;. PackJar.java 

C:>java -classpath c:\java\PackJar\food.jar; c:\java;. PackJar


Window8下CLASSPATH的设置方法:右键计算机,点击属性,出现如下界面。

 

点击左边的高级系统设置



选择高级



点击右下角的环境变量

在系统变量那里找到CLASSPATH

 点击编辑



我的CLASSPATH变量值设置为

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar;C:\myproj\classes;

最前面的是.;

这个的意思是告诉Java程序找类时要先查找当前目录的.class文件


那么当前目录是指什么?

还是用一个具体的例子来说明吧!

例如我现在在C:\myproj\bin下有一个Test.java文件

内容如下:



编译:



以上例子中当前目录就是C:\myproj\bin

可以看到Test.java用到了我自己定义的类A,那它是怎么找到类A的呢?

因为我的环境变量设置了.;

所以会到当前目录找,也就是看C:\myproj\bin目录下有没有直接有一个A.class。

我的A.class没有放在那个目录下,所以必定是没有的。

然后它还会去找,看看是不是系统类等等。

也必定不是。

最后可以看到我还设置了一个路径C:\myproj\classes;

所以会到C:\myproj\classes下看有没有A.class,这时候就找到了A.class。

其实A.class的路径是C:\myproj\classes\X\Y\A.class

找到的原因是我在Test.java里写了import X.Y.*,(导入该目录下的所有类)这个和CLASSPATH的根目录C:\myproj\classes;合起来就可以找到类A了。

另外,也可以写成import X.Y.A


感谢所有让我明白CLASSPATH的你们

版权声明:本文为博主原创文章,未经博主允许不得转载。

java中classpath详细

对于classpath作用的解释在《Thinking in Java》中有如下解释: Java 解释器的工作程序如下:   首先,它找到环境变量CLASSPATH(将Java 或者具有Java 解释能...
  • u013188532
  • u013188532
  • 2016年08月23日 11:31
  • 2930

java代码中获取classpath路径

最初找到的放法为 String path = Test.class.getResource("/").toString(); System.out.println("path = " + path...
  • magi1201
  • magi1201
  • 2014年01月24日 11:58
  • 30714

Java中的编译单元及Java解释器运行过程

编译单元 当编写一个Java源代码文件时,此文件以.java结尾,被称为编译单元。 1、  编译单元中可以有一个public类,且只能有一个public类,作为外界访问该类的接口,该类的名称必须与文件...
  • mjq93216
  • mjq93216
  • 2016年06月17日 14:37
  • 884

Java解释器的运行过程解释

首先介绍一下Java解释器的概念,Java解释器:解释器是Java虚拟机非常重要的一部分,它的工作就是把字节码转化为机器码并在特定的平台进行运行。简单一点,java的解释器只是一个基于虚拟机JVM平台...
  • yangyong0717
  • yangyong0717
  • 2017年10月28日 11:24
  • 702

如何设置classpath

在Java程序开发中,ClassPath是寻找Java类的路径,如同DOS里面的path一样。Java的类的封装结构是 package.Class,比如说我的ClassPath是如下设置的:set c...
  • guiru
  • guiru
  • 2007年09月05日 09:23
  • 792

java命令执行类,这里设置了classpath,系统变量里的classpath将失效

java命令执行类(类调用了某些jar包) (2011-03-02 14:24:42) 转载▼ 标签: 杂谈 分类: java 目录结构: ...
  • studyvcmfc
  • studyvcmfc
  • 2012年07月16日 22:31
  • 986

用例子解释:如何设置CLASSPATH(Java)

设置CLASSPATH的目的是让Java执行环境找到指定的Java程序(也就是.class文件)   Java程序如何找到并引用所需要的类?   1.利用环境变量CLASSPATH。CLASSPATH...
  • Xiao13Yu14
  • Xiao13Yu14
  • 2015年12月09日 00:22
  • 693

JVM、Java编译器和Java解释器

JVM:Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但JVM通常是在软件上而不是在...
  • u012712087
  • u012712087
  • 2015年06月06日 16:57
  • 9611

JAVA_SE基础——4.path的临时配置&Classpath的配置

这次,我来写下关于path的临时配置的心的 我来说个有可能的实例:如果你去到别人的电脑 又想写代码 又不想改乱别人的path配置的话 再说别人愿意你在别人的电脑上瞎配吗? 那该怎么办呢? 那没问题...
  • ThesCript_j
  • ThesCript_j
  • 2015年04月14日 21:50
  • 1107

如何在运行时添加classpath

这几天在做一个小项目的时候 有这样一个需求, 程序需要动态引入一个.class文件,然后用Class.forName(name)将其载入,从而得到.class文件的信息.如果是在系统当前指定的clas...
  • Jerry_liu20080504
  • Jerry_liu20080504
  • 2011年12月19日 10:06
  • 2412
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用例子解释:如何设置CLASSPATH(Java)
举报原因:
原因补充:

(最多只允许输入30个字)