我试着理解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环境变量的情况下也能正常工作?谢谢!
1条答案
按热度按时间pdsfdshx1#
IDE将“Maven依赖项”放在类路径中。
当为部署构建jar时,Maven将所有列出的依赖项放在它构建的jar文件中。Java知道如何读取这些信息并将正确的位置放在类路径中。
罐的位置列在
META-INF\MANIFEST.MF
中在本例中(Sping Boot 应用程序),依赖项jar都在主jar文件的
BOOT-INF/lib/
中。