Java中classpath怎么用

这篇文章给大家分享的是有关Java中classpath怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

概要

classpath是Java运行时环境搜索类和其他资源文件(比如jar\zip等资源)的路径。可以通过JDK工具(比如javac命令、java命令)后面的-classpath 参数设置classpath(这个可以通过装有java环境的dos窗口下输入sdktool的命令来查看可以输入的参数选项,见下图)

Java中classpath怎么用

或通过设置CLASSPATH环境变量。该 -classpath选项是首选项,因为您可以为每个应用程序单独设置,而不会影响其他应用程序,而无需其他应用程序修改其值。

下面是这两种方式的说明示例:

  • (1)通过jdk的命令行来为每个application设置

这个设置主要是为每个application设置,并不会影响别的程序的classpath以及环境变量的classpath,他只在当前窗口生效。

C:> sdkTool -classpath classpath2 ;classpath3 …

  • (2)设置classpath环境变量,这个是全局设置,对所有的应用程序生效

C:> set CLASSPATH=classpath2 ;classpath3 …

sdkTool

一个命令行工具,例如java, javac,javadoc,或apt。有关列表,请参阅JDK工具。

classpath2 ;classpath3

.jar,.zip或.class文件的classpath。每个classpath应以文件名或目录结尾,针对不同的情况,设置classpath的格式方法如下:

  • (1)对于包含.class文件的.jar或.zip文件,classpath以.zip或.jar文件的名称结尾。

下面是示例,笔者自己将一个工程打包成jar包,同时指定这个jar包下的某个class文件运行。结果如下:

Java中classpath怎么用

下面是工程的目录,其中工程中引用了其他jar包,笔者在打包的时候,用maven的assembly插件打包成了一个fat jar(想要了解具体打包方法,查看这两篇博文:

【Java】打包Jar包并用脚本执行

【Maven】Maven系列(二)——利用assembly插件打包

查看下面的classpath的值是怎么指定的。

Java中classpath怎么用

  • (2)对于未命名包中的.class文件,classpath以包含.class文件的目录结束。比如一个a.class文件在d:path2\path3下,但是这个a.class没有package,那么如果想让jvm搜索到这个class文件,这时指定classpath的时候,可以使用d:path2\path3,因为classpath的默认路径是当前路径,因此在使用的时候,如果是在当前路径下打开dos窗口,classpath命令缺省,那么这个时候其效果与指定当前路径为classpath的效果等效。如下的示例:

test.java

public class test {
    public static void main(String[] args) {
        System.out.println("hello world!");
    }
}

这个类是没有package的。

下面是运行结果:

Java中classpath怎么用

Java中classpath怎么用

程序运行成功

  • (3)对于命名包中的.class文件,类路径以包含“root”包(完整包名称中的第一个包)的目录结束。

示例如下:

Equals.java在名为string的package下

package string;
public class Equals {
    public static void main(String[] args){
        String a=new String("test");
        String b=new String("test");
        System.out.println(a==b);
    }
}

那么对于这种情况,指定classpath的方式如下:

Java中classpath怎么用

通过上面几条命令,可以看出来正确的命令行格式如下:

java -classpath package_rootpath package_name.class_name

Java中classpath怎么用