java.lang.NoClassDefFoundError错误

今天在写平台的时候遇到一个这样的错误 java.lang.NoClassDefFoundError;


本来周五的时候系统是可以运行的,周一早上,通过servers启动项目;

登录系统后台出现上面的错误

HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError: com/*****/common/JsonAndString

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问题依旧。
查找资料:


oClassDefFoundError解决示例

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 问题没有在出现;







相关标签:


评论: