2653885 发表于 2017-1-6 09:05:02

异常:org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONExcepti

控制台打印异常如下:

2013-05-16 17:22:26 com.tianque.core.struts.interceptor.ExceptionInterceptor.intercept(ExceptionInterceptor.java:28)- 拦截到异常:org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException -(:28)
2013-05-16 17:22:26 com.tianque.core.struts.interceptor.ExceptionInterceptor.intercept(ExceptionInterceptor.java:29)- org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:243)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:165)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:131)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:99)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:112)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:198)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
at com.opensymphony.xwork2.interceptor.LoggingInterceptor.intercept(LoggingInterceptor.java:56)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.tianque.core.struts.interceptor.ExceptionInterceptor.intercept(ExceptionInterceptor.java:26)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
at com.tianque.core.web.filter.ClearThreadVariable.doFilter(ClearThreadVariable.java:25)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:78)
at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:131)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:243)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:165)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:131)
at org.apache.struts2.json.JSONWriter.array(JSONWriter.java:418)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:155)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:131)
at org.apache.struts2.json.JSONWriter.add(JSONWriter.java:329)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:228)
... 98 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:227)
... 105 more
Caused by: java.lang.NullPointerException
at java.util.Calendar.setTime(Calendar.java:1070)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:859)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:852)
at java.text.DateFormat.format(DateFormat.java:316)
at com.tianque.domain.vo.IssueViewObject.getOccurDateString(IssueViewObject.java:401)
... 110 more


仔细看最后一段,不可小觑:Caused by: java.lang.NullPointerException
at java.util.Calendar.setTime(Calendar.java:1070)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:859)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:852)
at java.text.DateFormat.format(DateFormat.java:316)
at com.tianque.domain.vo.IssueViewObject.getOccurDateString(IssueViewObject.java:401)
... 110 more


IssueViewObject.java


public class IssueViewObject implements Serializable {
         ……………………
         ……………………
public String getOccurDateString() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH");
String nowTime = format.format(this.occurDate);
String now = nowTime.substring(nowTime.length() - 2, nowTime.length());
String time = "凌晨";
if (6 <= Integer.parseInt(now) && Integer.parseInt(now) < 12) {
time = "上午";
} else if (12 <= Integer.parseInt(now) && Integer.parseInt(now) < 18) {
time = "下午";
} else if (18 <= Integer.parseInt(now) && Integer.parseInt(now) < 24) {
time = "晚上";
}
return nowTime.substring(0, nowTime.length() - 2) + " " + time;
}
}


debug模式启动,根据控制台报错IssueViewObject.getOccurDateString(IssueViewObject.java:401)定位getOccurDateString() 中this.occurDate,发现它是null,解决方法

public class IssueViewObject implements Serializable {
         ……………………
         ……………………
public String getOccurDateString() {
if (null == occurDate)
return null;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH");
String nowTime = format.format(this.occurDate);
String now = nowTime.substring(nowTime.length() - 2, nowTime.length());
String time = "凌晨";
if (6 <= Integer.parseInt(now) && Integer.parseInt(now) < 12) {
time = "上午";
} else if (12 <= Integer.parseInt(now) && Integer.parseInt(now) < 18) {
time = "下午";
} else if (18 <= Integer.parseInt(now) && Integer.parseInt(now) < 24) {
time = "晚上";
}
return nowTime.substring(0, nowTime.length() - 2) + " " + time;
}
}
页: [1]
查看完整版本: 异常:org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONExcepti