最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

JVM classpath的理解和设置总结

来源:博客园

本文为博主原创,转载请注明出处:

1.介绍

classpath是java运行时环境搜索类和其他资源文件(比如jar\zip等资源)的路径。类路径告诉JDK工具和应用程序在哪里可以找到第三方和用户定义的类;

可以通过JDK工具(比如javac命令、java命令)后面的-classpath 参数设置classpath。


【资料图】

查看服务中的classpath 配置方式:

第一种.通过 jinfo 进行查看,在配置的最下面会有 java.class.path 的变量配置,如下:

第二种通过查看java进程

2.使用场景

1.使用-classpath:当你要编译或执行的类引用了其它的类,但被引用类的.class文件不在当前目录下时,就需要通过-classpath来引入类;

2.指定路径:当你要编译的类所在的目录和你执行javac命令的目录不是同一个目录时,就需要指定源文件的路径(CLASSPATH是用来指定.class路径的,不是用来指定.java文件的路径的)

3.指定加载资源先后顺序;classpath 中在前面的资源会优先加载;在后面的资源会再后面加载;

如果包名相同且全路径名也相同的类,出现 jar包冲突(NoSuchMehodException、NoSuchFieldException、ClassNotFoundException或者NoSuchMehodError、NoClassDefFoundError)出现这些错误的时候,就可以通过设置classpath,指定资源的加载顺序;从而解决jar包冲突的问题

3.classpath 设置

3.1 通过 -classpath 在环境中直接设置

当您调用JVM或其他JDK工具或使用环境变量时,可以使用JDK工具’ -classpath选项来更改classpath。使用该选项优于设置环境变量,因为您可以为每个应用程序单独设置,而不会影响其他应用程序,而无需其他应用程序修改其值。

示例如下:通过 -classpath 指定多个加载类;此处使用 分号分割

java -classpath C:\java\MyClasse1;C:\java\MyClass2 com.yiibai.MainApp

通过-classpath 指定多个jar包的顺序;此处使用 英文冒号进行分割

java -jar -classpath C:\dependency\framework.jar:C:\location\otherFramework.jar  test.jarjava -jar -cp C:\dependency\framework.jar:C:\location\otherFramework.jar  test.jar

java -cp ...java -classpath ...的简写

3.2 通过 java 代码使用 java.class.path 进行设置

// java类路径        String javaClassPath = System.getProperty("java.class.path");        System.out.println(javaClassPath);        System.setProperty("java.class.path", javaClassPath + ";D:\\");        javaClassPath = System.getProperty("java.class.path");        System.out.println(javaClassPath);

注意:在设置之前先获取系统的配置,然后在这个基础上拼接自己需要定义的配置

关键词: 应用程序 使用环境 直接设置