De superklasse “javax.servlet.http.HttpServlet” is niet gevonden op het Java Build Path

Ik heb een project gemaakt door Maven-integratie in Eclipse. Alles werkt prima, maar in de werkruimte in alle JSP-bestanden staat dit:

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

Naar de eerste string waar plaats:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

Als ik een eenvoudig dynamisch webproject maak en JSP erin, is alles in orde, geen fouten.


Antwoord 1, autoriteit 100%

Voeg eerst een runtime toe en selecteer projecteigenschappen. Controleer vervolgens de servernaam op het tabblad ‘Runtimes’ zoals weergegeven in de afbeelding.


Antwoord 2, autoriteit 38%

Voeg servlet-api-3.1.jartoe aan uw afhankelijkheden.

  • Maven

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

    configurations {
        provided
    }
    sourceSets {
        main { compileClasspath += configurations.provided }
    }
    dependencies {
        provided 'javax.servlet:javax.servlet-api:3.1.0'
    }
    

Antwoord 3, autoriteit 17%

Project → EigenschappenTarget RuntimesApache Tomcatwerkte voor mij. Er zijn geen Target Runtimes onder Facets (ik gebruik Eclipse v4.2(Juno)).


Antwoord 4, autoriteit 9%

Voor een Ant-project:

Zorg ervoor dat je servlet-api.jar in de map libhebt staan.

Voor een Maven-project:

Zorg ervoor dat je de afhankelijkheid hebt toegevoegd in pom.xml.

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

Een andere manier om dit te doen is: werk de projectfacetten bij om de juiste server op te halen.

Vink dit vakje aan op deze locatie:

Project → EigenschappenTarget Runtimes→ Apache Tomcat (elke server)


Antwoord 5, autoriteit 4%

Project → EigenschappenTarget Runtimes→ *Apache Tomcat werkte voor mij. Er zijn geen Target Runtimes onder Facets (ik gebruik Eclipse v4.4(Luna)).


Antwoord 6, autoriteit 4%

Het toevoegen van de Tomcat-server aan de serverruntime zal het werk doen:

ProjecteigenschappenTarget Runtimes→ Selecteer uw server in de lijst, “JBoss Runtime” → Voltooien

In het geval van Apache kun je Apache Runtime selecteren.


Antwoord 7, autoriteit 3%

Deze stappen kunnen je echt helpen:

  1. Als je geen server hebt geïnstalleerd, moet je deze stappen uitvoeren:

    Menu VensterVoorkeurenServer bestedenRuntime-omgevingToevoegen→ kies een naam en kies vervolgens het Apache-serverpad dat u al op uw pc hebt geïnstalleerd (u kunt ook op downloaden en installeren drukken) → VoltooienOK

Ref# klik hier voor meer informatie

  1. Voeg de Tomcat-server toe:

    ProjecteigenschappenJava Build PathBibliotheek toevoegen→ Selecteer “Server Runtime” in de lijst* → Volgende→ Selecteer “Apache Tomcat” → Voltooien

Ref# Dit antwoord


Antwoord 8, autoriteit 2%

Voeg deze afhankelijkheden gewoon toe aan uw pom.xml-bestand:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>javax.servlet.jsp-api</artifactId>
    <version>2.2.1</version>
    <scope>provided</scope>
</dependency>

Antwoord 9, autoriteit 2%

Het toevoegen van de Tomcat-server aan de serverruntime zal het werk doen:

Projecteigenschappen → Java Build PathBibliotheek toevoegenSelecteer “Server Runtime”in de lijst → Volgende→ Selecteer “Apache Tomcat” → Voltooien.


Antwoord 10

Selecteer project → EigenschappenProjectfacettenTarget RuntimesVMware Server.

Het werkte voor mij.


Antwoord 11

Omdat dit onbeantwoord is, vermoed ik dat er iets anders dan Maven-afhankelijkheden mis is met de ops-build.

Hoewel ik Maven niet gebruik, heb ik van tijd tot tijd hetzelfde probleem bij het opnieuw maken van mijn ontwikkelomgeving vanuit svn, en ik vergeet altijd waarom en moet het uitzoeken. Helaas lijkt dit een probleem te zijn met Eclipse.

Ik ben in staat om al dergelijke fouten te verwijderen van projecten die eenmaal werken, door slechts een van de dynamische webprojecten te kiezen, of alleen maar tomcat-afhankelijke projecten, en een afhankelijkheid in de bouwvolgorde te verplaatsen. Dit lijkt alle projecten te dwingen om correct opnieuw op te bouwen en alle fouten worden vervolgens opgelost.

Klik met de rechtermuisknop op een webproject, selecteer “pad bouwen” -> “Configureer bouwpad”.
Ga naar het tabblad “Bestellen en exporteren”, kies vervolgens een bibliotheek- of jar-item en verplaats deze omhoog of omlaag. Ik heb de JRE-systeembibliotheek gebruikt en naar boven verplaatst.

Klik op OK en al dat rood verdwijnt!


Antwoord 12

Als u Maven niet gebruikt, zet u de javax.servlet-api.jar gewoon in uw project-lib-map.


Antwoord 13

In het geval van JBoss…klik met de rechtermuisknop op project → Java-pad bouwen→ voeg externe JAR-bestanden toe.

Blader vervolgens naar jboss-folder → Algemeenlib→ servlet-api.jar

.
.
Klik op OK, vernieuw het project en voer het uit…


Antwoord 14

En als niets werkt om welke reden dan ook, bouw het dan vanaf de opdrachtregel:

ant -Dj2ee.server.home=D:\apache-tomcat-8.0.23 clean
ant -Dj2ee.server.home=D:\apache-tomcat-8.0.23 compile
ant -Dj2ee.server.home=D:\apache-tomcat-8.0.23 dist

Other episodes