我已经将我的 java servlet web 应用程序部署到我的服务器上。显示了我的 Web 界面,但是当我尝试从我的网页注册/登录时,它抛出了 HTTP Status 500 ? Internal Server Error exception like below
Root Cause
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 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>
我在使用 centos 8 OS 的服务器上安装了 tomcat 8.5。在我的本地计算机上一切正常,但是当我部署到我的服务器时,它抛出了这个错误。对不起,如果我不能清楚地传达我的信息,但希望它有所帮助
最佳答案
好吧,堆栈跟踪很容易解释:
java.lang.ClassNotFoundException: org.apache.commons.codec.digest.DigestUtils
当您在服务器上部署应用程序时,应用程序无法加载上述类。这可能是因为正在加载的 apache commons jar 的版本在您的服务器中与您本地的不同,或者您没有提供依赖项。请分享您的 pom.xml 以进行更多分析,并分享整个堆栈跟踪。如果您使用的是 maven,请确保已将其添加到 pom 中,例如:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
关于Java servlet 应用程序在我的本地电脑上工作,但在我的服务器开发上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64458204/