Maven 错误:包 javax.servlet 不存在 [重复]

Posted

技术标签:

【中文标题】Maven 错误:包 javax.servlet 不存在 [重复]【英文标题】:Maven ERROR: package javax.servlet does not exist [duplicate] 【发布时间】:2013-07-13 05:32:56 【问题描述】:

我正在开始一个遗留项目,并尝试使用 Maven 构建它。我正在使用 Eclipse EE 和 Tomcat v7.0。当我在终端中运行“mvn package”时,会出现上面标题行中的错误。这个错误真的难倒我,因为在我的 pom.xml 文件中我有以下依赖项

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

我还检查了 Properties>Targeted Runtimes 并确保 Tomcat v7.0 是选定的运行时。我很确定这是我的 eclipse 环境的问题,希望得到一些关于如何修复它的建议。

编辑:这里有一些附加信息。我运行“mvn package”后的第一个输出是

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project myProject: Compilation failure: Compilation failure:

这之后是另一个我忘记包含在原始帖子中的奇怪错误。我说这很奇怪,因为和包 javax.servlet 一样,org.apache.catalina 也应该包含在 tomcat 中

[ERROR] /path/to/Main.java:[7,26] error: package org.apache.catalina does not exist

另外,我想我混淆了遗留项目的含义,因为这不是一个旧项目。这只是一个已经完成大量工作的项目,我现在正在帮助原始创建者。

【问题讨论】:

【参考方案1】:

您缺少的依赖项可能是Servlet API

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
</dependency>

确保导入正确版本的 API。对于遗留项目,这可能是比 2.5 更旧的版本。

正如 Grzegorz 所提到的,您还应该使用 provided 范围,因为 Servlet API 应该由您的应用服务器(例如 Tomcat)提供。

【讨论】:

【参考方案2】:

将服务器运行时添加到您的项目中。 示例 - 用于 Tomcat

1 - 右键单击​​您的项目

2-选择构建路径

3- 转到库选项卡

4- 添加库

5- 选择服务器运行时间

6- 在这里你应该得到 Apache Tomcat

如果您没有在此处安装 Apache Tomcat,您需要在 Project Facets 中添加您的服务器,如下所示 -

1- 右键单击​​您的项目

2- 选择项目方面

3- 如果您没有获得选项,请单击链接“转换为多面形式”

4- 转到右侧的运行时选项卡并选择您的运行时

【讨论】:

虽然这是关于如何让 Eclipse 运行的一个很好的答案,但上面的内容与 maven 构建错误无关。

以上是关于Maven 错误:包 javax.servlet 不存在 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

错误: 程序包javax.servlet不存在 错误: 程序包javax.servlet.http不存在

编译错误:包 javax.servlet 不存在

解决报错:The import javax.servlet.annotation cannot be resolved

包 javax.servlet.jsp.tagext 不存在

maven各种包笔记

使用maven为web工程引入jstl包时报错了