Java程序路径

699 阅读1分钟

Java里的路径包括2个:workset(user.dir)的路径和classpath(java.class.path)的路径。 classpath路径其实是一个路径集合,但是和workset有关系。

public class HiYou {

    public void hi(){
        System.out.println("Hi,Yours!");
    }

    public static void main(String[] args){
        System.out.println(System.getProperty("user.dir"));
        String classPath = System.getProperty("java.class.path");
        String[] classpathArr = classPath.split(":");
        System.out.println("###################### classpathSize:" + classpathArr.length + " #########################");
        for(String str : classpathArr) {
            System.out.println(str);
        }
    }
}

输出,挑出相关的

user.dir用户当前工作目录地址:/Users/eleme/Downloads/servlet-demo

###################### classpathSize:104 #########################
classpath地址组成
1.JVM自带的jar包的地址
/Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home/jre/*.jar

2.代码build编译后的地址
/Users/eleme/Downloads/servlet-demo/target/classes/eleme/classes

3.maven仓库中jar包的地址
/Users/eleme/.m2/maven-repository/*

4.IDEA的jar包地址
/Applications/IntelliJ IDEA CE 2.app/Contents/lib/idea_rt.jar

classpath和user.dir相关的地方是:classpath中的项目代码编译结果输出地址的路径的前缀一般是user.dir,这个地址可以通过maven的build标签控制。

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
        <directory>/Users/eleme/Downloads/servlet-demo/target/classes/eleme</directory>
	</build>

Spring项目中的classpath 在Spring项目中,classpath路径通常包括以下几个部分:

  1. src/main/java:这个目录通常包含项目的主要Java源代码。
  2. src/main/resources:这个目录通常用于存放配置文件、SQL脚本、属性文件(.properties)、国际化文件、Spring XML配置文件等。所有在此目录下的文件在构建项目时会被复制到项目的classpath下。
  3. src/test/java:这个目录包含项目的测试代码。
  4. src/test/resources:这个目录用于存放测试环境下的配置文件。
  5. target/classes:Maven构建项目后,src/main/javasrc/main/resources目录下的文件(Java编译后的.class文件和资源文件)会被复制到这个目录下。
  6. target/test-classes:类似地,src/test/javasrc/test/resources目录下的文件在编译后会被复制到这个目录下。
  7. target/dependency:这个目录包含所有的Maven依赖项。Maven在构建项目时会下载所有的依赖项并将它们复制到这个目录下。

需要注意的是,这只是一个通常的Spring项目的目录结构,实际的目录结构可能会因项目的具体需求而有所不同。具体的classpath配置可以在Maven或Gradle的构建文件中进行配置。 在Maven项目中,classpath是由Maven自动管理的。当你在pom.xml文件中添加依赖时,Maven会自动将这些依赖项添加到项目的classpath中。 例如,假设你想将Spring框架添加到项目的classpath中,你可以在pom.xml<dependencies>标签中添加以下代码: <dependency> 2 <groupId>org.springframework</groupId> 3 <artifactId>spring-context</artifactId> 4 <version>5.3.10</version> 5</dependency> 保存pom.xml文件后,Maven会自动下载Spring框架的JAR文件以及它的依赖项,并将它们添加到项目的classpath中。 你不需要手动配置classpath,因为Maven会自动处理这些配置。然而,有时你可能需要在项目的resources目录中添加一些特定的文件,如配置文件、SQL脚本等。在这种情况下,你需要确保这些文件在构建项目时被复制到输出目录。 要配置资源目录,你可以在pom.xml<build>标签中添加以下代码: <build> 2 <resources> 3 <resource> 4 <directory>src/main/resources</directory> 5 </resource> 6 </resources> 7</build> 这将告诉Maven在构建项目时将src/main/resources目录下的文件复制到输出目录(默认为target/classes)。 总之,你通常不需要手动配置Maven项目的classpath,因为Maven会自动管理依赖项和资源文件。只需在pom.xml文件中添加依赖和配置资源目录,Maven就会自动处理classpath。