2014-11-14 129 views
21

我是一名初学者,学习spring和hibernate(利用项目中的maven)并遇到此问题并陷入此处。试图找到解决办法,但最终没有在哪里。请帮忙。非常感谢在Java构建路径中未找到超类“javax.servlet.http.HttpServlet”

错误: “无法找到该标签库描述符” http://java.sun.com/jsp/jstl/core

代码:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> 

试图在The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path How do I import the javax.servlet API in my Eclipse project?

错误仍然存​​在给出的解决方案

pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.journaldev.spring</groupId> 
<artifactId>SpringMVCHibernate</artifactId> 
<name>SpringMVCHibernate</name> 
<packaging>war</packaging> 
<version>1.0.0-BUILD-SNAPSHOT</version> 
<properties> 
    <java-version>1.6</java-version> 
    <org.springframework-version>4.0.3.RELEASE</org.springframework-version> 
    <org.aspectj-version>1.7.4</org.aspectj-version> 
    <org.slf4j-version>1.7.5</org.slf4j-version> 
    <hibernate.version>4.3.5.Final</hibernate.version> 
</properties> 
<dependencies> 
    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${org.springframework-version}</version> 
     <exclusions> 
      <!-- Exclude Commons Logging in favor of SLF4j --> 
      <exclusion> 
       <groupId>commons-logging</groupId> 
       <artifactId>commons-logging</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 

    <!-- Apache Commons DBCP --> 
    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
     <version>1.4</version> 
    </dependency> 
    <!-- Spring ORM --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 

    <!-- AspectJ --> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>${org.aspectj-version}</version> 
    </dependency> 

    <!-- Logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${org.slf4j-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>${org.slf4j-version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.15</version> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.mail</groupId> 
       <artifactId>mail</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>javax.jms</groupId> 
       <artifactId>jms</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jdmk</groupId> 
       <artifactId>jmxtools</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jmx</groupId> 
       <artifactId>jmxri</artifactId> 
      </exclusion> 
     </exclusions> 
     <scope>runtime</scope> 
    </dependency> 

    <!-- @Inject --> 
    <dependency> 
     <groupId>javax.inject</groupId> 
     <artifactId>javax.inject</artifactId> 
     <version>1</version> 
    </dependency> 

    <!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 

    <!-- Test --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.7</version> 
     <scope>test</scope> 
    </dependency> 

</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.9</version> 
      <configuration> 
       <additionalProjectnatures> 
        <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> 
       </additionalProjectnatures> 
       <additionalBuildcommands> 
        <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> 
       </additionalBuildcommands> 
       <downloadSources>true</downloadSources> 
       <downloadJavadocs>true</downloadJavadocs> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.5.1</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArgument>-Xlint:all</compilerArgument> 
       <showWarnings>true</showWarnings> 
       <showDeprecation>true</showDeprecation> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <configuration> 
       <mainClass>org.test.int1.Main</mainClass> 
      </configuration> 
     </plugin> 
    </plugins> 
    <finalName>${project.artifactId}</finalName> 
</build> 

+0

尝试库添加到lib文件夹下的WEB-INF – 2014-11-14 18:49:22

+0

(我几乎无法在我的小手机上看到一些东西)。确保在'提供'的范围内将EE SDK定义为项目的依赖项。 THEN:构建错误发生在哪里?在Maven构建中,在IDE中的某个地方或运行时尝试访问应用程序? – JBA 2014-11-14 18:57:47

+0

IDE.how中编译时发生错误以包含EE SDK依赖关系? – user3362080 2014-11-14 20:02:50

回答

69

添加服务器运行Tomcat服务器将做的工作:

Project Properties-> Java Build Path-> Add Library -> Select "Server Runtime" from the list-> Next->Select "Apache Tomcat"-> Finish 
+0

这不适合我。你能帮我吗? – Greyshack 2015-07-22 09:29:37

+0

尽管我将Web Sphere应用程序服务器添加为我的目标运行时间,但此解决方案对我的Eclipse蓝色不起作用 – 2015-10-05 10:39:09

+0

即使对我来说,这也不起作用。我选择了Glashfish服务器,但是出现此错误。 – MAC 2017-06-27 15:30:55

6

在pom.xml中添加下面的依赖,为我工作。

<dependency> 
<groupId>javax.servlet</groupId> 
<artifactId>servlet-api</artifactId> 
<version>2.5</version> 
</dependency> 
+0

起初我加了 2.4。但eclipse在index.jsp文件中抱怨显示“javax-servlet-http-httpservlet-was-found-found”出现红叉。当我将其更改为 2.5时,红叉现在不见了。 – Rumel 2016-09-13 09:37:23

3

引述下面我也收到了同样的错误:

The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path.

我按照这些步骤来解决问题:

  1. 右键单击项目
  2. 选择属性
  3. 选择Project Facets
  4. 选择Apache Tomcat作为运行服务器
  5. 单击确定
1

附加servlet的API jar文件这是目前在tomcat的文件夹下的lib文件夹。 你可以这样做,如下 项目 - >属性 - > java构建路径 - >在库下点击添加外部罐子 之后,去项目 - >清洁 - >建立所有。 这为我工作。

0

添加servlet-api.jar文件,该文件存在于tomcat文件夹下的lib文件夹中。

1.Select项目属性
2.Select Java构建路径
3.Select库
4.Select外部JAR
5.Select的servlet-api.jar文件
:您可以使用以下步骤执行此操作 6.应用&好的。

这些问题应该在这些步骤后解决。

2

Maven的项目,你应该增加这种依赖性

<dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
</dependency> 
1

我遇到了同样的问题来了。我试图在“服务器运行时”添加服务器,但不幸的是,这对我没有用。对我而言,我添加了javax.servlet-api-3.0.1.jar构建路径中的文件。另一方面,如果它是Maven项目,则为此jar文件添加依赖项。这肯定会奏效。

希望这可以帮助别人。

0

添加服务器运行Tomcat服务器将做的工作:

右键点击你的项目,并比;

项目属性→目标运行时→选择/检查“Apache Tomcat”→完成。

0

我有这个相同的问题,还有其他一些人正在报告一个现有的Maven项目。

我有适当的依赖关系,我可以看到maven依赖项下的jar,但是项目被错误地引入eclipse。

我最终不得不删除该项目,再次从git中克隆,然后将该项目导入为现有的Maven项目。

这解决了这个线程和我遇到的其他几个问题的问题。关于解决方案的更多细节可以在这里找到:Maven Project in Eclipse `org.springframework cannot be resolved to a type` from target path

0

经常检查,如果你的Java文件的src/main/java的,而不是在一些其他目录路径。

+0

Java文件应该位于与软件包名称匹配的文件夹中......不确定您的答案是否以此方式工作。 – GhostCat 2017-08-03 17:19:50

0

试一试 - 在运行时

+1

你为什么引用它? – 2017-08-15 23:40:21

0

放入Tomcat对于一个Ant项目:

确保,你在lib文件夹的servlet-api.jar文件。

对于Maven项目:

确保,你在pom.xml中添加依赖。

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

另一种方法是:更新项目构面以选择合适的服务器。

选中该复选框在以下位置:

项目→属性→目标运行→的Apache Tomcat(任何服务器)

0

您的系统可以有许多不同的Tomcat版本。你可以尝试解决它。

右键单击项目,然后选择属性,选择项目Facet和 右侧部分,选择正确的Apache Tomcat版本的运行时环境和 单击确定