classpath 实际指的就是路径,英文翻译为 类路径
我们常常在项目中这样写:
mybatis.mapper-locations=classpath:mapper/*.xml
那么这个 classpath 指向的就是编译后的 target 文件夹下的 mapper 文件下的以 .xml 结尾的文件,spring会去扫描这些类,读取 mybatis 相关的 xml 的类。
如上图所示,在编译打包后的 target 中,根目录是 classes 这个文件夹,它就是我们要找的classpath。配置 calsspath ,比如 mybatis 对配置文件路径, xml 文件的路径,spring就会到 classes 下的该路径下去扫描。
配置classpath就是对程序资源路径的扫描。
classpath: 只能匹配一个文件(文件夹或路径) ,我们有时候也可以看到 classpath*: 的这种写法,
这个 可以指向多个符合文件路径的文件 ,在多模块程序中常常会被用到。
classpath和path的区别
使用JAVA开发或运行基于JAVA编写的程序,在安装JDK之后,一般需要配置如下几条环境变量(以Windows为例):
那么,它们的作用是什么呢?
JAVA_HOME 该变量指明了JAVA运行环境的安装路径。它和JAVA之间,除了字面相似度高外,没有什么联系。之所以配置该变量大约有三点原因:
如果确定没有应用依赖该变量,甚至可以不配置。但基于前两个优点,一般不建议这么做。
CLASSPATH 该变量指明JAVA运行环境JRE搜索 .class 文件的路径。
PATH 该变量指明操作系统查找可执行程序的路径。该变量由操作系统使用,配置 %JAVA_HOME%\\bin 以便快捷访问该目录下如 java 、 javac 等命令行和其他JDK工具。
明白了这三个变量的用途,可知对于JAVA程序最重要的是 ClassPath 环境变量,因为它指明JAVA程序搜索第三方和用户自定义类的路径,如果不正确配置,JAVA程序将不能正常运行。
那么如何正确配置 ClassPath 呢?有如下四种方式:
其中第三种方式和第四种方式可独自配置单个JAVA应用而不影响其他JAVA应用,官方推荐使用第三种方式配置 ClassPath 。具体的配置方法如开篇所述,形式类似如下:
每个路径之间使用英文分号‘’进行分隔(linux环境下则使用英文冒号‘:’分隔)。这个例子中的单个路径都是文件夹,除此之外,单个路径还可以是特定的jar包和zip包路径。假如一个类文件的路径如下
如果该类位于 com.zdb 包下,那么正确设置的 ClassPath 为:
如果该类引用了如下的第三方jar包:
此时 ClassPath 为:
如果该类引用了多个第三方jar包:a.jar b.jar c.jar,此时 ClassPath 为:
也可以使用通配符‘*’表示为:
需要注意的是:
针对第二点,上一个例子在程序运行时,使用系统属性 java.class.path 获得的类路径可能为(注意abc的顺序已改变):
这个顺序对于JVM加载类颇为重要。假设特殊情况下,b.jar和c.jar中都含有同包名且同类名的一个类,那么JVM当查找到c.jar时发现该类后,将不会继续查找b.jar。如果JAVA应用依赖于jar包的加载顺序,那么需要明确指定jar包顺序,而不能使用通配符。
针对第三点, manifest 文件配置类路径和前三种方式稍有不同,形式为:
注意到,使用空格分隔各个路径而不是分号‘’或冒号‘:’。另外,当类路径过多而需要换行时,从第二行开始,必须以两个空格开头。
附:
JAVA类路径官网介绍
Manifest文件类路径说明
一个jar包加载顺序引发的BUG
java的环境变量classpath该怎么设置呢?
classpath和path的区别:意思不同、用法不同、侧重点不同
一、意思不同
1.classpath意思:路径;轨道
2.path意思:n. 路线;小路;小径;轨道;路程
二、用法不同
1.classpath用法:在句中可用作定语或表语。
例句:
Add this directory to the Java classpath and the system path.
将该目录添加到Java类路径和系统路径。
2.path用法:基本意思是“小路”“小径”,常指人或牲畜走出来的路,相当于pathway或footpath,引申可指思想、行为和生活等“路线,路径,办事程序,办法”等,均用作可数名词。
例句:
We followed the path along the clifftops
我们沿着悬崖顶上的小路走。
三、侧重点不同
1.classpath侧重点:表示抽象的。
2.path侧重点:表示客观存在的。
classpath的作用
java的环境变量classpath的设置方法:
1、在我的电脑界面,鼠标右键点击“此电脑”。
2、在弹出的列表中,点击最下方的“属性”。
3、在跳转到的界面中,点击“高级系统设置”。
4、在弹出的系统属性界面,点击右下方的“环境变量”。
5、在窗口的右下方点击“新建”,创建classpath环境变量。
6、创建名为“classpath”的环境变量,在变量值中输入“ %JAVA_HOME%\\lib%JAVA_HOME%\\lib\\tools.jar”,然后点击确定,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全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!