导入javax.servlet无法解析

sna*_*ile 132 java eclipse tomcat servlets

我正在尝试使用eclipse for Java EE来开发Web应用程序.

我需要使用Tomcat作为我的服务器.我已经下载了Tomcat并且它正在运行.但是我的程序没有编译.

我收到以下错误:

导入javax.servlet无法解析.

我需要做什么?

Ric*_*arn 202

您需要将Servlet API添加到类路径中.在Tomcat 6.0中,这是servlet-api.jar在Tomcat的lib文件夹中调用的JAR 中.您可以将对该JAR的引用添加到项目的类路径中,也可以将JAR的副本放在Eclipse项目中并从那里将其添加到类路径中.

如果要将JAR保留在Tomcat的lib文件夹中:

  • 右键单击该项目,单击" 属性".
  • 选择Java Build Path.
  • 单击" 库"选项卡
  • 单击添加外部JAR ...
  • 浏览以查找servlet-api.jar并选择它.
  • 单击" 确定"以更新构建路径.

或者,如果您将JAR复制到项目中:

  • 右键单击该项目,单击" 属性".
  • 选择Java Build Path.
  • 单击添加JAR ...
  • servlet-api.jar在项目中查找并选择它.
  • 单击" 确定"以更新构建路径.

  • 在`/ WEB-INF/lib`中拥有特定于servletcontainer的JAR的副本将使您的应用程序不可移植.它只能在完全相同的服务器make/version上运行,而不能在其他服务器make /版本上运行.`NoClassDefFoundError`会飞来飞去. (8认同)
  • 这是解决方案.下面的BalusC给出了确切的解决方案. (8认同)
  • 尽管如此,这显然是笨拙而不是推荐的方法. (5认同)
  • 添加 servlet-api.jar 没有任何改变,**项目** > **干净**使其工作。 (2认同)

Bal*_*usC 92

如果尚未完成,则需要在" 服务器"视图中集成Tomcat .右键单击并选择" 新建">"服务器".从列表中选择适当的Tomcat版本并完成向导.

创建新的Dynamic Web Project时,应在第一个向导步骤中从列表中选择集成服务器作为Targeted Runtime.

或者,如果您有现有的Dynamic Web Project,则可以在项目属性中的Targeted Runtimes条目中设置/更改它.然后,Eclipse将自动将其所有库添加到构建路径中(在项目中没有它们的副本!).

  • 从长远来看,这可能是最好的建议. (16认同)
  • 对我不起作用,我有你说的一切,但它仍然无法解析javax.servlet(使用Tomcat 8.0.3作为服务器) (6认同)

小智 17

您需要在POM中将依赖关系的范围设置为"已提供".

http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

<dependency>  
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.4</version>
  <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

那一切都会好的.


Boz*_*zho 13

添加servlet-api.jar到您的类路径.你可以从tomcat的lib文件夹中获取它.


lei*_*sel 13

我遇到了同样的问题,因为我的"动态Web项目"没有引用我想要使用的已安装服务器,因此没有引用服务器提供的Servlet API.

以下步骤解决了这个问题,而没有向Java Build Path添加额外的Servlet-API(Eclipse版本:Luna):

  • 右键单击 "动态Web项目"
  • 选择属性
  • 在"属性"向导左侧的列表中选择" 项目构面 "
  • 在向导的右侧,您应该看到一个名为Runtimes的选项卡.选择Runtime选项卡,然后检查要运行servlet 的服务器.

编辑:如果没有列出服务器,您可以在"运行时"选项卡上创建一个新服务器


And*_*rey 8

添加到pom.xml

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


Var*_*run 5

如果出现此编译错误,则表示您尚未在类路径中包含servlet jar.包含此jar的正确方法是将Server Runtime jar添加到eclipse项目中.您应该按照以下步骤解决此问题:您可以从此处下载servlet-api.jar http://www.java2s.com/Code/Jar/s/Downloadservletapijar.htm

Save it in directory. Right click on project -> go to properties->Buildpath and follow the steps.
Run Code Online (Sandbox Code Playgroud)

注意:屏幕上显示的罐子不正确.

您可以按照步骤进行配置.

在此输入图像描述

在此输入图像描述 在此输入图像描述 在此输入图像描述