java - 如何解决 java.lang.NoClassDefFoundError?

标签 java exception spring-mvc error-handling stack-trace

运行程序时出现 java.lang.NoClassDefFoundError!? 这是堆栈跟踪:

java.lang.NoClassDefFoundError: org/apache/xerces/framework/XMLParser
abc.def.presentation.controllers.UnixServerJobController.handleRequestInternal(UnixServerJobController.java:64)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

这里是代码供关心的人使用

    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)
        throws Exception{
    try{
        String jobName = request.getParameter("JobName");
        jobName.concat(".xml");
        String config = request.getParameter("Config");
        File file = new File(config + "/"+jobName);
        ConfigFile jobConfig = new ConfigFile(file);
        SchdJobCaller jobCaller = getJobCaller();
        jobCaller.runJobs(jobConfig);
    }
    catch(Exception e){
        e.printStackTrace();
        throw e;
    }
    return null;
}

只需传递像 abc.com/def.jsp?JobName=name1&Config=config1 这样的 url 即可由 Spring Web MVC 中的 Controller 处理!

这是我在谷歌搜索时发现的!

If you are working in J2EE environment than visibility of Class among multiple Classloaders can also cause java.lang.NoClassDefFoundError, see examples and scenario section for detailed discussion.

了解更多:http://javarevisited.blogspot.com/2011/06/noclassdeffounderror-exception-in.html#ixzz28CQRODWN

这可能是问题的根源,但是如何解决Class对多个Classloader的可见性!?

第一次遇到这样的错误! 有什么建议可以给我吗?

谢谢

最佳答案

您必须找到一个包含 Apache Xerces XML 解析器的 JAR,并将其放入您的 CLASSPATH 中。

看起来investxa Controller 包想要使用Xerces。就我个人而言,我认为这不是一个好主意。 Java JDK 内置 DOM 和 SAX 解析器已经有一段时间了。

关于java - 如何解决 java.lang.NoClassDefFoundError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12701087/

相关文章:

java - Android 应用程序在模拟器上运行,在手机上崩溃

java垃圾收集执行<(主要收集:mark and sweep> every time it does a <minor collection:scavenge>

java - 将未知对象传递给 Java 中的方法

java - Spring 没有为每个 session 初始化一个对象

java - Spring MongoTemplate - 将聚合结果映射到集合(例如 List 和 Map)

java - 响应未根据 Spring 4.3.0 中我的自定义响应类进行转换

java - 为什么下面的代码在导出 1 处停止?

python - 如果您的库与错误的 Python 版本一起使用,应该引发什么适当的内置异常?

swift - 为什么我在使用 NSTimer 每 x 秒运行一次函数时收到此错误消息?

java - 找不到java.lang.ArrayIndexOutOfBoundsException的问题