Java servlet 应用程序可以在我的本地电脑上运行,但不能用于我的服务器开发

Java servlet app worked on my pc local but not working on my server development

我已经将我的 java servlet 网络应用程序部署到我的服务器上。显示了我的网络界面,但是当我尝试从我的网页 register/login 时,它抛出了 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

当您在服务器上部署应用程序时,应用程序无法加载上述内容 class。这可能是因为正在加载的 apache commons jar 的版本在您的服务器中与在您的本地不同,或者您没有提供依赖项。请分享您的 pom.xml 以进行更多分析,并分享整个堆栈跟踪。

如果您使用的是 Maven,请确保将其添加到您的 pom 中,例如:

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>