加载jcaptcha servlet时无法初始化类Error

时间:2016-05-02 12:57:17

标签: java spring azure tomcat servlets

在localhost上调试我的webapp时,一切运行良好,但在将其部署到服务器(Microsoft Azure,操作系统:Ubuntu 14.04 tomcat7 + apache)时,找不到jcaptcha servlet,并将其抛出为“java.lang” .NoClassDefFoundError:无法初始化类“

type Exception report

message Servlet execution threw an exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
root cause

java.lang.NoClassDefFoundError: Could not initialize class com.tjw.hrmanage.util.jcaptcha.CaptchaServiceSingleton
    com.tjw.hrmanage.util.jcaptcha.JcaptchaServlet.doGet(JcaptchaServlet.java:40)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.52 (Ubuntu) logs.

3 个答案:

答案 0 :(得分:0)

这是因为你在ubuntu中的app无法找到相应的jar文件。您可以将此类的jar文件添加到/ lib,并在' build path'中为此jar添加引用。在eclipse中,然后再将你的项目重新部署到azure。

答案 1 :(得分:0)

众所周知,导致此错误的原因有三个。

  1. 该类属于缺少的JAR文件,或者JAR未添加到类路径中,或者有时jar的名称已更改。
  2. 该类不在路径CLASSPATH中,没有确定的知道它的方法,但很多时候你可以看看打印System.getProperty("java.classpath")它会从那里打印类路径你至少可以了解你的实际运行时类路径。
  3. 尝试使用您认为可行的类路径使用显式-classpath选项运行,如果它正在运行,那么这是一个确定的短信,表明某人正在覆盖java类路径。
  4. 根据我的经验,我认为您的问题与第一个案例相符。请检查您的代码和引用的库。

答案 2 :(得分:0)

我将jdk版本从openjdk7更改为java-8-oracle并重启我的tomcat,然后一切运行良好,非常感谢您的回答。