Issue
I already deploy my java servlet web app to my server . My web interface was shown but when I try to register/login from my webpage its thrown HTTP Status 500 ? Internal Server Error exception like below
java.lang.NoClassDefFoundError: org/apache/commons/codec/digest/DigestUtils com.mockup.Register.doPost(Register.java:38) javax.servlet.http.HttpServlet.service(HttpServlet.java:652) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) Root Cause
java.lang.ClassNotFoundException: org.apache.commons.codec.digest.DigestUtils org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180) com.mockup.Register.doPost(Register.java:38) javax.servlet.http.HttpServlet.service(HttpServlet.java:652) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
The description says that
The server encountered an unexpected condition that prevented it from fulfilling the request.
pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<packaging>bundle</packaging>
<name>JSON.simple</name>
<version>1.1.1</version>
<description>A simple Java toolkit for JSON</description>
<url>http://code.google.com/p/json-simple/</url>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<id>Yidong</id>
<name>Yidong Fang</name>
<roles>
<role>architect</role>
<role>developer</role>
</roles>
<timezone>+8</timezone>
</developer>
</developers>
<scm>
<connection>scm:svn:http://json-simple.googlecode.com/svn/trunk/</connection>
<developerConnection>scm:svn:http://json-simple.googlecode.com/svn/trunk/</developerConnection>
<url>http://json-simple.googlecode.com/svn/trunk/</url>
</scm>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.6</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.2</source>
<target>1.2</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
I installed tomcat 8.5 to my server which is using centos 8 OS . Everything worked fine in my computer local but when i deploy to my server it thrown this error . Sorry if i cant't deliver my message clearly but hope its help
Solution
Well the stacktrace is pretty self explanatory :
java.lang.ClassNotFoundException: org.apache.commons.codec.digest.DigestUtils
When you deploy your application on your server, the application fails to load the above class. It might be because the version of the apache commons jar that is getting loaded is different in your server than in your local or you haven't provided the dependency. Please share your pom.xml for more analysis and also share entire stacktrace.
If you are using maven make sure you have it added in your pom like :
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
Answered By - Ananthapadmanabhan
Answer Checked By - Mildred Charles (JavaFixing Admin)