2014-11-14 354 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版本的運行時環境和 單擊確定