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

17

23

I'm a beginner and learning spring and hibernate (utilizing maven in project)and came across this problem and got stuck here. tried finding solution but ended up no where. Please help. thanks a lot

Error: "Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

Code:

<%@ 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" %>

Tried the solutions given in 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?

The error still present

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>

Fulgurant answered 14/11, 2014 at 18:47 Comment(3)
try add the libraries to the lib folder under web-infWithout
(I cant barely see something on my small mobile phone). Make sure you have the EE SDK defined as dependency for your project in the scope 'provided'. THEN: Where does the build error occur? IN the maven build, somewhere in your IDE or at runtime when you try to access your application?Midstream
The error occurs in compile time in the IDE.how to include EE SDK dependency?Fulgurant
N
78

Adding the tomcat server in the server runtime will do the job :

Project Properties-> Java Build Path-> Add Library -> Select "Server Runtime" from the list-> Next->Select "Apache Tomcat"-> Finish
Nordstrom answered 26/2, 2015 at 5:30 Comment(3)
This doesn't do the job for me. Can you help?Banas
This solution doesn't work for My Eclipse Blue even though I added Web sphere application server as my target runtimeConant
This didn't work even for me. I selected the Glashfish server however I get this error.Innoxious
G
7

Adding below dependency in pom.xml, worked for me.

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
Gunpaper answered 10/4, 2016 at 5:26 Comment(1)
at first I added <version>2.4</version>. But eclipse was complaining in index.jsp file showing red cross with "javax-servlet-http-httpservlet-was-not-found". When i changed it to <version>2.5</version>, the red cross is gone now.Blossomblot
F
5

I too received the same error as quoted below:

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

I followed these steps to resolve the issue:

  1. Right Click on Project
  2. Select Properties
  3. Select Project Facets
  4. Select Apache Tomcat as Runtime server
  5. Click OK
Frolic answered 20/6, 2016 at 16:1 Comment(0)
M
2

for maven project , you should add this dependency

<dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
</dependency>
Manana answered 6/5, 2017 at 13:43 Comment(0)
I
2

I came across the same issue. I tried adding the server in "Server Runtime" but unfortunately that didn't work for me.

What worked for me is, I added javax.servlet-api-3.0.1.jar file in build path. On the other hand If It's a Maven project add dependency for this jar file. This would definitely work.

Innoxious answered 27/6, 2017 at 15:44 Comment(0)
S
1

add servlet-api jar file which is present in the lib folder under tomcat folder. You can do this as follows Project -> properties -> java build path -> under libraries click add external jars after that go to project -> clean -> build all. this worked for me.

Smother answered 17/1, 2017 at 22:25 Comment(0)
M
0

Add servlet-api.jar file which is present in the lib folder under tomcat folder. You can do this using the following steps:

1.Select project properties
2.Select Java Build Path
3.Select Libraries
4.Select External Jars
5.Select servlet-api.jar
6. Apply & Ok.

The issue should be resolved after these steps.

Maisel answered 27/1, 2017 at 18:29 Comment(0)
P
0

Adding the Tomcat server in the server runtime will do the job:

Right click your project and than;

Project properties → Target Runtimes → Select/Check "Apache Tomcat" → Finish.

Plummer answered 26/7, 2017 at 18:20 Comment(0)
O
0

I had this same issue and a couple others being reported for a existing maven project.

I had the proper dependencies in place and I could see the jar under maven dependencies, however the project was improperly brought into eclipse.

I ended up having to delete the project, clone from git again then do an import of the project as an existing maven project.

This solved the issue in this thread and several others issues I was having. More details on solution can be found here: Maven Project in Eclipse `org.springframework cannot be resolved to a type` from target path

Orebro answered 27/7, 2017 at 18:21 Comment(0)
C
0

Always check if your java files are in src/main/java and not on some other directory path.

Cyprio answered 3/8, 2017 at 16:33 Comment(1)
Java files should be in folders matching the package name ... not sure if your answers works that way.Quinton
P
0

Try This - Add Tomcat at run time

Passing answered 15/8, 2017 at 23:19 Comment(1)
Why did you quote it?Tomcat
E
0

For an Ant project:

Make sure, you have servlet-api.jar in the lib folder.

For a Maven project:

Make sure, you have the dependency added in POM.xml.

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

Another way to do it is: Update the project facets to pick up the right server.

Check this box in this location:

Project → Properties → Target Runtimes → Apache Tomcat (any server)

Eight answered 4/9, 2017 at 7:5 Comment(0)
C
0

Your system can have many different tomcat versions. You can try to solve it.

Right Click on Project then Select Properties, Select Project Facets and on the right section, Select right Apache Tomcat versions as Runtimes and click ok

Clench answered 26/9, 2017 at 11:52 Comment(0)
G
0

I faced the same error. Adding the tomcat server in the runtime environment will solve the error:

Right click on your project -> Properties -> Targeted runtimes -> Select apache tomcat server -> click apply -> click ok.

Gagliano answered 10/6, 2018 at 14:25 Comment(0)
P
0

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

Error: "Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

Solution: Adding the tomcat server in the server runtime will do the job : Project Properties-> Java Build Path-> Add Library -> Select "Server Runtime" from the list-> Next->Select "Apache Tomcat"-> Finish

This solution work for me.

Pyelography answered 3/10, 2018 at 11:42 Comment(0)
M
0

you are getting this error because of the server is not enabled by default i.e you don't have any runtime chosen for that is why you are getting the error so, for that you need to do the following steps to choose the runtime.

Follow The Path right-click on the project --> GoTo Properties--> Click on Targeted Runtimes-->then click on the checkbox i.e Apache tomcat or other servers which you are using --->then click on apply and then apply and close

Marchant answered 6/1, 2020 at 7:42 Comment(0)
S
0

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

Shepherd answered 7/10, 2020 at 0:58 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.