運行我的程序時,我得到了java.lang.NoClassDefFoundError !? 這裏是堆棧跟蹤:如何解決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;
}
剛好路過的URL這樣abc.com/def.jsp?JobName=name1 &配置= CONFIG1代碼由Spring Web MVC中的控制器處理!
這是我搜索時發現的!
如果您在J2EE環境中工作而不是Class中多個Classloaders之間的可見性也會導致java.lang.NoClassDefFoundError,請參閱示例和方案部分以獲得詳細討論。
瞭解更多:http://javarevisited.blogspot.com/2011/06/noclassdeffounderror-exception-in.html#ixzz28CQRODWN
這可能是問題的根源,但如何類的可見性解決到多個類加載器?!
這是我第一次得到這樣的錯誤! 對我有什麼建議嗎?
感謝
一些代碼請。 – Lion
一件簡單的事情就是將一個虛擬引用放到org.apache.xerces.framework.XMLParser的某個地方的某個「外層」的代碼中,以確保它的解析令人滿意。事實上,使用名稱和監視器爲ClassNotFoundException執行'self.getClassLoader()。loadClass()'。如果您遇到ClassNotFoundException,那麼類路徑中缺少該類。如果你得到NoClassDefFoundError,那麼你的jar文件之間會有某種不匹配。如果兩者都得不到,但以後仍然會得到NoClassDefFoundError,那麼你確實可能會遇到多個類加載器的問題。 –