在学习Spring框架时,我发现了一个奇怪的编译错误:
“找不到class:javax.servlet.ServletException”。
在搜索代码之后,我在org.springframework.web.WebApplicationInitializer类中找到了一些代码,它使用了javax.servlet.ServletException
package org.springframework.web;
import javax.servlet.ServletContext; //here
import javax.servlet.ServletException;//and here
public interface WebApplicationInitializer {
void onStartup(ServletContext var1) throws ServletException;
}但是,在POM文件中,没有定义依赖项:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.1.RELEASE</version>
<name>Spring Web</name>
<description>Spring Web</description>
<url>https://github.com/spring-projects/spring-framework</url>
<organization>
<name>Spring IO</name>
<url>https://spring.io/projects/spring-framework</url>
</organization>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<id>jhoeller</id>
<name>Juergen Hoeller</name>
<email>jhoeller@pivotal.io</email>
</developer>
</developers>
<scm>
<connection>scm:git:git://github.com/spring-projects/spring-framework</connection>
<developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection>
<url>https://github.com/spring-projects/spring-framework</url>
</scm>
<issueManagement>
<system>GitHub</system>
<url>https://github.com/spring-projects/spring-framework/issues</url>
</issueManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.1.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.1.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>我认为每个库都应该在其POM文件中写入它的依赖项,以便Maven能够识别并自动下载依赖库。为什么Spring忽略了依赖项?
发布于 2019-12-03 02:37:05
为什么Spring忽略了依赖关系?
不知道为什么。你必须向开发人员要求完整的推理.
如果您将SpringWeb5.0.0 POM文件与最新的4.x.xPOM文件进行比较,您将看到依赖项有了很大的清除。删除了许多克鲁夫特,包括对servlet的任何依赖。
如果您查看spring 5.0.0 (如这里所示)的依赖项并向下滚动到所提供的依赖项,您将看到"javax.servlet“javax.servlet-api 4.0.0的依赖关系。对比一下SpringWeb5.0.0(如这里所示)。
请注意,spring(即您使用的依赖项)本身不需要依赖servlet,否则它不会构建。
因此,这使我认为,也许您的项目需要依赖,而不是spring.如果您想要获取传递的servlet依赖项。
(你是在读一本教科书,还是在看一个更老版本的Spring的教程或视频?如果是,我建议您在学习期间更新教科书或使用旧的Spring版本。)
回到你的问题上:
为什么Spring没有在其POM中添加javax.javaee-api?
一个原因是:因为它不需要它!
https://stackoverflow.com/questions/59148970
复制相似问题