Classpath 在哪?

Classpath 在哪?

::: tip 问题

src 目录就是 classpath 。这个说法对不对?

:::

1. 什么叫 Classpath?

Classpath 就是「字面含义」!指的就是放项目的 .class 文件的文件夹(位置)

Java 项目的 Classpath

对于 java 项目,.class 文件在项目编译后出现的 bin 目录下。

这个目录下的内容是:

与包名一致的目录层次结构

.class 文件

Java 项目

│── ...

└── bin

└── com

└── softeem

└── App.class

Java Web 项目的 Classpath

对于 java-web 项目,.class 文件在项目编译后出现的 build/classes 下。

这个目录下的内容是:

与包名一致的目录层次结构

.class 文件

Java Web 项目

│── ...

└── build

└── classes

└── com

└── softeem

└── App.class

这两个文件夹(的位置)才是名副其实的 Classpath 。

「src 目录就是 Classpath」不对

原因很简单,src 目录下根本就没有 .class 文件!

一个根本就没有 .class 文件的文件夹 根本不可能 / 没有资格 是 Classpath 。

「src 目录就是 Classpath」有一定道理

在编译项目时,编译器(或开发工具)是对 src 下的内容进行编译,而后再将编译的结果「搬运」到 Classpath 下。

那么也即是说,src 和 Classpath 是有对应关系的!

src 下的目录结构(即包结构)与 Classpath 下的目录结构(即包结构)是一样的。

src 下出现的 .java 文件,在 Classpath 下就是对应的 .class 文件。

src 下出现的配置文件(.xml 和 .properties)会被「搬运」到 Classpath 下的同样位置。

因为 src 和 Classpath 的对应关系,所以,说 src 就是 Classpath(从最终的效果上看)勉强也算对。

2. 有对应关系的文件夹可以不止一个

src 和 Classpath 的对应关系并非唯一。你可以去设置更多的文件夹与 Classpath 的对应关系。

未来编译器在编译项目时,会将这 N 个配置文件的内容编译并「搬运」到 Classpath 中。