java.lang.StackOverflower错误:空JsonWriter.writeDeferredName,但不使用Json?
我知道标题不是最好的,但是错误对我来说一点也不清楚。我的错误是:java.lang.StackOverflower错误:空JsonWriter.writeDeferredName,但不使用Json?,java,spring-boot,nullpointerexception,stack-overflow,overflowexception,Java,Spring Boot,Nullpointerexception,Stack Overflow,Overflowexception,我知道标题不是最好的,但是错误对我来说一点也不清楚。我的错误是: 019-04-15 14:28:45.270 ERROR 12644 --- [nio-9090-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; n
019-04-15 14:28:45.270 ERROR 12644 --- [nio-9090-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.StackOverflowError] with root cause
java.lang.StackOverflowError: null
at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:401) ~[gson-2.8.5.jar:na]
at com.google.gson.stream.JsonWriter.value(JsonWriter.java:480) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapters$3.write(TypeAdapters.java:148) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapters$3.write(TypeAdapters.java:133) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:97) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) ~[gson-2.8.5.jar:na]
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) ~[gson-2.8.5.jar:na]
at
[...]
之所以使用[…]
,是因为这些行重复了很长时间,而且它们都是一样的。就我通过搜索错误所理解的,递归性和无限循环应该是有问题的,但在我的代码中,我没有找到问题所在。这是我正在调用的方法:
@PostMapping(path=PathConstants.START_ACTION)
public ResponseEntity<BaseResponse<ProcessInstance>> start(@PathVariable String processDefinitionId, @RequestBody(required=false) Map<String,Object> params) throws FileNotFoundException {
LOGGER.info("starting process definition with id {}", processDefinitionId);
ResponseEntity<BaseResponse<ProcessInstance>> response = null;
ProcessInstance pi = null;
LocalDateTime time = LocalDateTime.now();
try {
if(params!=null) {
pi = runtimeService.startProcessInstanceById(processDefinitionId, params);
List<org.flowable.task.api.Task> tasks = taskService.createTaskQuery().list();
System.out.println("Length " + tasks.get((tasks.size()-1)).getProcessVariables());
org.flowable.task.api.Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
if(task==null) {
System.out.println("Task is null");
} else {
System.out.println("Info task " + runtimeService.getVariables(pi.getId()));
}
} else {
System.out.println("Empty ");
pi = runtimeService.startProcessInstanceById(processDefinitionId);
}
response = new ResponseEntity<>(new BaseResponse<>(Constants.OK, pi), HttpStatus.OK);
MongoOperations.writeLogSuccess(pi ,pi.getProcessDefinitionName(), "OK"); //if it went well
} catch (FlowableObjectNotFoundException e) {
String pdn = repositoryService.getProcessDefinition(processDefinitionId).getName();
MongoOperations.writeLogFailure(time, pdn, "KO not found");
response = new ResponseEntity<>(new BaseResponse<>(e.getMessage(), null), HttpStatus.NOT_FOUND);
}
catch (FlowableException e) { //TEST EXCEPTION WITH FAILSTATUSCODE
String pdn = repositoryService.getProcessDefinition(processDefinitionId).getName();
MongoOperations.writeLogFailure(time, pdn, "KO flowable");
response = new ResponseEntity<>(new BaseResponse<>(e.getMessage(), null), HttpStatus.INTERNAL_SERVER_ERROR); //other exception are managed here
} catch(Exception e) {
String pdn = repositoryService.getProcessDefinition(processDefinitionId).getName();
MongoOperations.writeLogFailure(time, pdn, "KO general");
response = new ResponseEntity<>(new BaseResponse<>(e.getMessage(), null), HttpStatus.INTERNAL_SERVER_ERROR); //other exception are managed here
}
return response;
}
你试过调试吗?上面代码中的哪一点引发异常?是将响应转换为JSON还是将输入反序列化为POJO?你能尝试一个独立的代码进行序列化/反序列化并尝试重新创建错误吗?Hi@sinujohn我没有对JSONY执行反序列化操作,你正在将一些值序列化为JSON。您试图写入的值是什么?上面代码中的哪一行引发了异常?@sinujohn在我发布的代码中,我调用的代码中,我没有执行“显式”序列化,在代码中没有其他点我正在执行该操作。我怀疑这可能是POST端点在检索RequestBody时执行的“隐式”序列化?否则我不知道还能是什么。在这种情况下我能做什么?你试过调试吗?上面代码中的哪一点引发异常?是将响应转换为JSON还是将输入反序列化为POJO?你能尝试一个独立的代码进行序列化/反序列化并尝试重新创建错误吗?Hi@sinujohn我没有对JSONY执行反序列化操作,你正在将一些值序列化为JSON。您试图写入的值是什么?上面代码中的哪一行引发了异常?@sinujohn在我发布的代码中,我调用的代码中,我没有执行“显式”序列化,在代码中没有其他点我正在执行该操作。我怀疑这可能是POST端点在检索RequestBody时执行的“隐式”序列化?否则我不知道还能是什么。在这种情况下,我能做什么?
{
"input":2
}