I am struggling for the past 6-7 hrs trying to figure out what went wrong with my Apache Tomcat Server. In all of my projects, the jdk
version got switched to 1.6
from 1.8
.
To solve the version conflict
, I verified whether compiled version and JVM of Tomcat version are same by taking help from here.
For multiple contexts with the same path error, I know i need to remove duplicate Context tags in server.xml
. So, first I check in Servers project (which gets created itself when you add Apache Tomcat Server in Eclipse) and find none there. So, I delve deep into the directory(Eclipse WorkSpace) metadata\.plugins\org.eclipse.wst.server.core\tmp3\conf
and removed the duplicate Context tags over there, with help taken from here.
Now when i create a new Dynamic Web Project, everything works fine and I am able to see the web page. But if I try to access any of the HTML, XHTML files of those old project in which the jdk got changed, this org.apache.catalina.LifecycleException
continues to pop up and the server fails to start, and consequently these duplicate Context tags continues to build up again and again every time i start the server.
None of my old Web application projects seems to work now.
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext [/EdBurns_ChrisSchalk]]..... SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]] .... Caused by: java.lang.RuntimeException: Unexpected element value kind in annotation: 0
How to prevent these context tags being build up again and again in server.xml. Secondly, how to get back those old web projects to working state again?
I had a similar error and fixed it by following steps: 1. Under Servers project (which gets created itself when you add Apache Tomcat Server in Eclipse), open server.xml 2. Comment out the line
<Context docBase=... />
One of the problems that can cause this is when you forget to put the / character in the WebServlet annotation @WebServlet("/example") @WebServlet("example") I hope it works, it worked for me.
Went through the various resources on the net but none of them helped then i deleted the existing server and added the same server again and now it is working fine and the steps are
Window>>ShowView>>Servers>>RightClick>>Delete
and then add the server again as you have added previously.
If you are using the following stack: Server Version: Apache Tomcat/9.0.21 Servlet Version: 4.0 JSP Version: 2.3
Then try adding <absolute-ordering />
to your web.xml file. So your file looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>spring-mvc-crud-demo</display-name>
<absolute-ordering />
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
......
This seems to be an issue with local Maven repository. (i.e. .m2 folder) may be due to some corrupt .jar file
For me, the following actions helped to overcome this issue.
On my local file system, I've deleted the directory .m2 (Maven local repository)
In Eclipse, updated the project (select Maven > Update Project)
Ran the app again on Tomcat server.
In my case, the servlet-api.jar file in jre/lib/ext in the jdk directory conflicts with the servlet-api.jar file in tomcat, removing the servlet-api.jar in jre/lib/ext in the jdk directory can solve the problem.
Below solution worked for me: Navigate to Project->Clean.. Clean all the projects referenced by Tomcat server Refresh the project you're trying to run on Tomcat
Try to run the server afterwards
If you are not using annotation based Servlet then please remove annotation @WebServlet("/YourServletName") from the starting of the servlet. This annotation confuses the mapping with web.xml, after removing this annotation Tomcat server will work properly.
Just make sure build with correct web.xml configuration.I have update web.xml with tomcat configuration and it worked for me. Sample :-
<?xml version="1.0" encoding="UTF-8"?>_x000D_
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"_x000D_
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"_x000D_
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"_x000D_
id="WebApp_ID" version="2.5">_x000D_
<display-name>simulator</display-name>_x000D_
<description>simulator app</description>_x000D_
_x000D_
_x000D_
<!-- File upload -->_x000D_
<welcome-file-list>_x000D_
<welcome-file>index.html</welcome-file>_x000D_
</welcome-file-list>_x000D_
<!-- excel simulation -->_x000D_
<display-name>simulator</display-name>_x000D_
<description>simulator app</description>_x000D_
<!-- File upload -->_x000D_
<welcome-file-list>_x000D_
<welcome-file>InsertPage.html</welcome-file>_x000D_
</welcome-file-list>_x000D_
<servlet>_x000D_
<servlet-name>FileUploadServlet</servlet-name>_x000D_
<servlet-class>clari5.excel.FileUploadServlet</servlet-class>_x000D_
<load-on-startup>1</load-on-startup>_x000D_
</servlet>_x000D_
<servlet-mapping>_x000D_
<servlet-name>FileUploadServlet</servlet-name>_x000D_
<url-pattern>/excelSimulator/FileUploadServlet</url-pattern>_x000D_
</servlet-mapping>_x000D_
_x000D_
_x000D_
_x000D_
</web-app>
_x000D_
Go to the task manager, kill the java processes and turn the server back on. should work fine.
I think it is jar file version problem. I had the same issue and I fixed it by changing the commons-codec-1.6.jar file from the build path. Earlier I was using latest version 1.10. Gradually I decreased the versions and 1.6 version fixed my issue.
Source: Stackoverflow.com