How to run an Eclipse Dynamic Web Application with Apache Tomcat Server?

deployment, eclipse, localhost, servlets, tomcat

Solution

I managed to solve the above 3 problems by doing the following steps:

1- Double click your server (tomcat in this case) [if you can't see it go to `Windows -> Show/View -> Other -> Server -> Servers`]. Your server name will look something like: "Tomcat v7.0 Server at localhost".

Double click the server and make sure the Server Locations is set to : "Use Tomcat installation (takes control of Tomcat installation)". If you can't edit the servers location: Stop the server, `right-click the server and select Publish`. If still you cant edit it:

Right click the server --> Add and Remove and remove your project then publish it again.

The reason for selecting "Use Tomcat installation" is that Catalina_Base will point to a temporary location and will look something like:

"-Dcatalina.base="C:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1"

This will cause a 404 Error even when trying to open Apache Tomcat Start Page. When selecting "Use Tomcat Installation" the Catalina_Home and Catalina_Base values will be the same and both will point to the Tomcat Installation Directory: Example:

-Dcatalina.base="C:\apache-tomcat-7.0.37" -Dcatalina.home="C:\apache-tomcat-7.0.37"

To see the Arguments:

Double Click the Server then click on "Open launch configuration", the values will appear in the "Arguments" tab.

2- When using dependencies (ex External Jar files), make sure the files are in : Web-Inf/lib and then add them to the class-path by doing the following:

Right-click the project --> Build-path --> Configure Build Path Select the "Libraries" tab Click Add External JARs and select the jar files in Web-Inf/lib

Next you need to deploy dependencies: To do this:

Right-Click the project -> Properties From the left side select "Deployment Assembly" On the right hand side click Add -> Java Build Path Entries -> Next Add all the jar files your project needs.

Otherwise, you'll get a class not found exception for the used jar files.

3- Make sure Web-Inf/lib does not contain any jar files from Apache Tomcat, as this will cause redundancies and will give the exception above!

Problem

I tried running Apache Tomcat Server on Eclipse and got into the following problems: - The Catalina_Base is using a temporary location! - I couldn’t deploy the dependencies "jar files"! - I got the following exception when running my web project: ``` SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;] with root cause java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext; ```

Original source