首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Spring没有在其POM中添加javax.javaee-api?

为什么Spring没有在其POM中添加javax.javaee-api?
EN

Stack Overflow用户
提问于 2019-12-03 01:27:36
回答 1查看 265关注 0票数 0

在学习Spring框架时,我发现了一个奇怪的编译错误:

“找不到class:javax.servlet.ServletException”。

在搜索代码之后,我在org.springframework.web.WebApplicationInitializer类中找到了一些代码,它使用了javax.servlet.ServletException

代码语言:javascript
复制
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文件中,没有定义依赖项:

代码语言:javascript
复制
<?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忽略了依赖项?

EN

回答 1

Stack Overflow用户

发布于 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?

一个原因是:因为它不需要它!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59148970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档