今天在写平台的时候遇到一个这样的错误 java.lang.NoClassDefFoundError;
本来周五的时候系统是可以运行的,周一早上,通过servers启动项目;
登录系统后台出现上面的错误
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: com/*****/common/JsonAndString org.springframework.web.servlet.DispatcherServlet.htmlDispatch(DispatcherServlet.java:972) org.springframework.web.servlet.DispatcherServlet.htmlService(DispatcherServlet.java:852) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) org.springframework.web.servlet.FrameworkServlet.htmlGet(FrameworkServlet.java:778) javax.servlet.http.HttpServlet.service(HttpServlet.java:624) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.htmlFilter(WsFilter.java:52) org.apache.shiro.web.servlet.ProxiedFilterChain.htmlFilter(ProxiedFilterChain.java:61) org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) org.apache.shiro.web.servlet.AdviceFilter.htmlFilterInternal(AdviceFilter.java:137) org.apache.shiro.web.servlet.OncePerRequestFilter.htmlFilter(OncePerRequestFilter.java:125) org.apache.shiro.web.servlet.ProxiedFilterChain.htmlFilter(ProxiedFilterChain.java:66) org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) org.apache.shiro.subject.support.SubjectCallable.htmlCall(SubjectCallable.java:90) org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) org.apache.shiro.web.servlet.AbstractShiroFilter.htmlFilterInternal(AbstractShiroFilter.java:362) org.apache.shiro.web.servlet.OncePerRequestFilter.htmlFilter(OncePerRequestFilter.java:125) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) org.springframework.web.filter.DelegatingFilterProxy.htmlFilter(DelegatingFilterProxy.java:259)
其中JsonAndString是处string与json互相转化的一个类,很简单没有太多东西。
查找了一下资料,说NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。
重启servers问题依旧。
查找资料:
1当发生由于缺少jar文件,或者jar文件没有添加到classpath,或者jar的文件名发生变更会导致java.lang.NoClassDefFoundError的错误。
2.当类不在classpath中时,这种情况很难确切的知道,但如果在程序中打印出System.getproperty(“java.classpath”),可以得到程序实际运行的classpath
3.运行时明确指定你认为程序能正常运行的 -classpath 参数,如果增加之后程序能正常运行,说明原来程序的classpath被其他人覆盖了。
其中1应该不可能能;
于是我在调用JsonAndString前面加入了 System.getproperty(“java.classpath”);
重启Servers 问题好了。。。。。。
在想引起的原因是什么?
我将System.getproperty(“java.classpath”)注释掉了,再次重启Servers 问题没有在出现;
相关标签: