Java Struts从2.3.7升级到2.3.33后,JSONWriter.setDateFormatter的NoSuchMethodError

Java Struts从2.3.7升级到2.3.33后,JSONWriter.setDateFormatter的NoSuchMethodError,java,json,ajax,maven,struts2,Java,Json,Ajax,Maven,Struts2,我将Struts从2.3.7升级到2.3.33(使用Maven)。在2.3.7版的情况下,我的web应用程序可以正常工作,但在升级到2.3.33版后,当我尝试访问包含对服务器的Ajax调用的网页时,会收到以下异常 java.lang.NoSuchMethodError: org.apache.struts2.json.JSONWriter.setDateFormatter(Ljava/lang/String;)V 在 org.apache.struts2.json.JSONUtil.serial

我将Struts从2.3.7升级到2.3.33(使用Maven)。在2.3.7版的情况下,我的web应用程序可以正常工作,但在升级到2.3.33版后,当我尝试访问包含对服务器的Ajax调用的网页时,会收到以下异常

java.lang.NoSuchMethodError: org.apache.struts2.json.JSONWriter.setDateFormatter(Ljava/lang/String;)V 在 org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:106)[struts2-json-plugin-2.3.33.jar:] 在 org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:203)[struts2-json-plugin-2.3.33.jar:] 在 org.apache.struts2.json.JSONResult.execute(JSONResult.java:177)[struts2-json-plugin-2.3.33.jar:] 在 com.opensymphony.xwork2.DefaultActionInvocation.executesult(DefaultActionInvocation.java:372)[xwork-core-2.3.33.jar:2.3.33] 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:276)[xwork-core-2.3.33.jar:2.3.33] 在 org.apache.struts2.interceptor.debug.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)[struts2-core-2.3.33.jar:2.3.33] 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)[xwork-core-2.3.33.jar:2.3.33] 在 com.opensymphony.xwork2.intercept.DefaultWorkflowIntercept.doIntercept(DefaultWorkflowIntercept.java:168)[xwork-core-2.3.33.jar:2.3.33] 在 com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)[xwork-core-2.3.33.jar:2.3.33] 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)[xwork-core-2.3.33.jar:2.3.33] 在 com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)[xwork-core-2.3.33.jar:2.3.33] 在 com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:245)[xwork-core-2.3.33.jar:2.3.33]

当我的Java操作将json响应发送回客户机时,会发生此错误

下面是我使用的Ajax调用:

$.ajax({
url:“列出示例json”,
//数据:options.data,
//数据类型:“json”,
类型:“POST”,
data:JSON.stringify({sortParameters:sortParametersList,pageSize:options.data.pageSize,skip:options.data.skip}),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(结果){
选项。成功(结果);
},
错误:功能(响应、状态、错误){
openErrorDialog(响应、状态、错误);
}
});
访问“我的操作”时没有任何问题,并返回
SUCCESS
。如上所述,当Struts为客户端生成JSON响应时,问题似乎就出现了。下面是我的Java类,结果类型为
json

@Result(name = "success", type = "json", params = { "ignoreHierarchy", "false",
        "includeProperties", "textsampleList.*, count" })
@Injectable
public class ListSampleJsonAction {

    @Override
    public String execute() {
        
        List<SampleDTO> sampleList = new ArrayList<>();
        sampleList.add(new SampleDTO("sample")) ;
        return SUCCESS;
    }
          
}
@Result(name=“success”,type=“json”,params={“ignoreHierarchy”,“false”,
“includeProperties”、“textsampleList.*,count”})
@注射的
公共类ListSampleJsonAction{
@凌驾
公共字符串execute(){
List sampleList=new ArrayList();
添加(新样本到(“样本”);
回归成功;
}
}
我想提到的是,在2.3.16.3之前,上述实现一直在工作,并且我从服务器获得了一个响应(带有请求的数据)

我使用maven 3.0.4和Java 1.7_079。有人能提出可能出了什么问题吗?

错误
java.lang.NoSuchMethodError:org.apache.struts2.json.JSONWriter.setDateFormatter(Ljava/lang/String;)V

该方法可在以下网址获得:

和来自

因此,正如@HarKrishan在评论中提到的,您有一个jar冲突版本


但是如果不是,那么您可能需要在类路径上有正确版本的库。

有jar冲突没有冲突什么?NoSuchMethodError的主要原因是您可能编译了一个与运行时使用的版本不同的类。所以存在jar冲突。@HarKrishan我没有编译任何东西(插件)是从maven存储库下载的。如果从github编译,则不会得到
NoSuchMethodError
,因为它明确显示它有一个方法引用。@RomanC我检查了asm库版本,并使用了xwork core 2.3.33中包含的3.3。我不知道这是不是正确的版本。至于jar冲突,我所有的struts库都是相同的版本。我仍然有同样的问题。