# Classpath 在哪?
问题
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 中。