Intellij Idea 为什么项目不设置类路径环境变量就能正常工作?

0ejtzxu1  于 2023-01-29  发布在  其他
关注(0)|答案(1)|浏览(198)

我试着理解CLASSPATH对Java和Sping Boot 项目的作用。我发现它是一个环境变量,用于向Java编译器提供任何包层次结构的根。但我没有设置这个CLASSPATH,它在环境变量中缺失,项目工作正常。我只设置了PATH环境变量,并放置了jdk/bin的位置。
另一方面,我现在正在Intellij上的一个多模块Maven项目中工作,例如,如果我试图在一个没有依赖关系的模块中使用类ObjectMapper,它会说:

Cannot resolve symbol 'ObjectMapper'

Add library 'Maven com.fasterxml.jackson.core:jackson-databind.2.13.1' to classpath

当我点击它的时候,它会在这个模块的pom.xml中添加jackson-databind依赖项。所以在这个例子中,classpath似乎引用了pom.xml,而不是一个环境变量。这些是不同类型的classpath吗?为什么我的项目在没有classpath环境变量的情况下也能正常工作?谢谢!

pdsfdshx

pdsfdshx1#

IDE将“Maven依赖项”放在类路径中。
当为部署构建jar时,Maven将所有列出的依赖项放在它构建的jar文件中。Java知道如何读取这些信息并将正确的位置放在类路径中。
罐的位置列在META-INF\MANIFEST.MF

Manifest-Version: 1.0
Created-By: Maven JAR Plugin 3.2.2
Build-Jdk-Spec: 11
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.altron.ne.SpringBootApp
Spring-Boot-Version: 2.7.2
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx

在本例中(Sping Boot 应用程序),依赖项jar都在主jar文件的BOOT-INF/lib/中。

相关问题