简体   繁体   English

反射错误:java.lang.IllegalArgumentException:参数数量错误

[英]Reflections error: java.lang.IllegalArgumentException: wrong number of arguments

I'm developing a RESTfull web application and I keep getting a IllegalArgumentException on this piece of code: 我正在开发RESTfull Web应用程序,并且在这段代码上不断收到IllegalArgumentException:

@GET
@Path("/{parent}/subjects/{title}/comments")
@Produces(MediaType.APPLICATION_JSON)
public Collection<Comment> getSubjectComments(@PathParam("parent") String 
  parent, @PathParam("title") String title){

    Subject s = null;
    try {
        s = Database.getSubject(URLDecoder.decode(parent, "UTF-
  8"),URLDecoder.decode(title, "UTF-8"));
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if(s!=null){
        return s.getComments();
    }

    return null;
}

What I'm trying to do is get all the comments associated with the Subject s (each subjects has its own ArrayList of comments and that is what is the return value of s.getComments() ) 我想做的是获取与Subject关联的所有注释(每个主体都有其自己的ArrayList注释,这就是s.getComments()的返回值)

I checked, all argument and variable values are in order. 我检查了所有参数和变量值的顺序。

I believe the main problem has something to do with reflection, but I can't really figure it out. 我认为主要问题与反思有关,但我无法真正弄清楚。

This is the ajax code that calls the method: 这是调用该方法的ajax代码:

var parentContainer;
function renderComments(){

var currForum = getCookie("forum");
var currSubject = getCookie("subject");

if(parentContainer==null){
    $.ajax({
        url: "/WebApp/app/forums/"+encodeURI(currForum)+"/subjects/"+encodeURI(currSubject)+"/comments",
        type: "GET",
        dataType: "json",

        success: function(data){
            //javascript code
        }
    });
}else{
    $.ajax({
        url: "/WebApp/app/forums/"+encodeURI(currForum)+"/subjects/"+encodeURI(currSubject)+"/comments/"+encodeURI(parentContainer.id)+"/comments",
        type: "GET",
        dataType: "json",

        success: function(data){
            //javascript code
        }
    });
}

} }

When the $.ajax call is made, it never enters the success function. 进行$ .ajax调用时,它永远不会进入成功函数。

I'm developing the app with Jersey, on Tomcat 7 server, Eclipse. 我正在Tomcat 7服务器Eclipse上使用Jersey来开发应用程序。

Thanks in advance. 提前致谢。

EDIT 编辑

I am also getting ClassFormatExceptions, but application works fine until the ajax call is created. 我也收到ClassFormatExceptions,但是在创建ajax调用之前,应用程序可以正常工作。

This is my full stack trace 这是我的完整堆栈跟踪

SEVERE: Generating incomplete JSON
Jun 27, 2017 12:30:41 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Jersey RESTful Application] in context with path [/WebApp] threw exception [java.lang.IllegalArgumentException: wrong number of arguments] with root cause
java.lang.IllegalArgumentException: wrong number of arguments
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.yasson.internal.model.GetFromGetter.internalGetValue(GetFromGetter.java:28)
at org.eclipse.yasson.internal.model.GetValueCommand.getValue(GetValueCommand.java:34)
at org.eclipse.yasson.internal.model.ReflectionPropagation.getValue(ReflectionPropagation.java:72)
at org.eclipse.yasson.internal.model.PropertyModel.getValue(PropertyModel.java:257)
at org.eclipse.yasson.internal.serializer.ObjectSerializer.marshallProperty(ObjectSerializer.java:76)
at org.eclipse.yasson.internal.serializer.ObjectSerializer.serializeInternal(ObjectSerializer.java:59)
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:60)
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serializerCaptor(AbstractContainerSerializer.java:91)
at org.eclipse.yasson.internal.serializer.CollectionSerializer.serializeInternal(CollectionSerializer.java:79)
at org.eclipse.yasson.internal.serializer.CollectionSerializer.serializeInternal(CollectionSerializer.java:35)
at org.eclipse.yasson.internal.serializer.AbstractContainerSerializer.serialize(AbstractContainerSerializer.java:60)
at org.eclipse.yasson.internal.Marshaller.serializeRoot(Marshaller.java:118)
at org.eclipse.yasson.internal.Marshaller.marshall(Marshaller.java:76)
at org.eclipse.yasson.internal.JsonBinding.toJson(JsonBinding.java:98)
at org.glassfish.jersey.jsonb.internal.JsonBindingProvider.writeTo(JsonBindingProvider.java:117)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:266)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:251)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163)
at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:109)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163)
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:85)
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:163)
at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1135)
at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:662)
at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:395)
at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:385)
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:280)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703)
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

ClassFormatException stacktrace: ClassFormatException stacktrace:

SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/Users/Jelena/Documents/apache-tomcat-7.0.69/wtpwebapps/WebApp/WEB-INF/lib/yasson-1.0.0-RC2.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:97)
at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:55)
at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:176)
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:85)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2121)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1983)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1944)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1929)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1328)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:887)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:387)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5472)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/Users/Jelena/Documents/apache-tomcat-7.0.69/wtpwebapps/WebApp/WEB-INF/lib/javax.json-1.1.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:97)
at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:55)
at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:176)
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:85)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2121)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1983)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1944)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1929)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1328)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:887)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:387)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5472)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/Users/Jelena/Documents/apache-tomcat-7.0.69/wtpwebapps/WebApp/WEB-INF/lib/javax.json.bind-api-1.0.0-RC2.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:97)
at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:55)
at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:176)
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:85)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2121)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1983)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1944)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1929)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1328)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:887)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:387)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5472)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/Users/Jelena/Documents/apache-tomcat-7.0.69/wtpwebapps/WebApp/WEB-INF/lib/javax.json-api-1.1.jar!/] for annotations
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:97)
at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:55)
at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:176)
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:85)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2121)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1983)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1944)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1929)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1328)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:887)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:387)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5472)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

[module-info.class] is module info which is added in Java 9 (not yet released). [module-info.class]是在Java 9中添加的模块信息(尚未发布)。 I suspect that javax.json-1.1.jar which you use was built for Java 9, but class scanning infrastructure of the specific Tomcat 7 version you use does not support that yet. 我怀疑您使用的javax.json-1.1.jar是为Java 9构建的,但是您使用的特定Tomcat 7版本的类扫描基础结构尚不支持该功能。

https://tomcat.apache.org/tomcat-7.0-doc/changelog.html here we can see the following in release notes of version 7.0.76: https://tomcat.apache.org/tomcat-7.0-doc/changelog.html在此处,我们可以在7.0.76版本的发行说明中看到以下内容:

60688: Update the internal fork of Apache Commons BCEL to r1782855 to add early access Java 9 support to the annotation scanning code. 60688:将Apache Commons BCEL的内部fork更新为r1782855,以将早期访问Java 9支持添加到注释扫描代码中。 (markt) (Markt的)

So I suppose you need to update tomcat to at least version 7.0.76. 因此,我想您需要将tomcat至少更新到7.0.76版本。 But I'd upgrade to the latest 7.0.78. 但是我会升级到最新的7.0.78。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Java java.lang.IllegalArgumentException:参数数量错误 - Java java.lang.IllegalArgumentException: wrong number of arguments 获取java.lang.IllegalArgumentException:以下代码段的参数数量错误 - Getting java.lang.IllegalArgumentException: wrong number of arguments error for below code snippet Java Reflections错误:参数数量错误 - Java Reflections error: Wrong number of arguments 线程“ main”中的异常java.lang.IllegalArgumentException:运行kafka生产程序时参数数量错误 - Exception in thread “main” java.lang.IllegalArgumentException: wrong number of arguments while running kafka producer 在线程“主”中使用method.invoke异常java.lang.IllegalArgumentException:参数数量错误 - Using method.invoke Exception in thread “main” java.lang.IllegalArgumentException: wrong number of arguments java.lang.IllegalArgumentException:参数个数错误调用构造函数时发生异常 - java.lang.IllegalArgumentException: wrong number of arguments Exception while invoking constructor TestNG工厂,DataProvider和构造函数上的valargs导致“ java.lang.IllegalArgumentException:参数数量错误” 2 - TestNG Factory, DataProvider, and valargs on constructor is causing “java.lang.IllegalArgumentException: wrong number of arguments”2 Method.invoke抛出java.lang.IllegalArgumentException:参数数量错误 - Method.invoke throws java.lang.IllegalArgumentException: wrong number of arguments 错误:java.lang.IllegalArgumentException - Error: java.lang.IllegalArgumentException 为什么我得到 Java.lang.IllegalArgumentException:使用反射创建带有私有构造函数的新实例时参数数量错误 - Why do I get Java.lang.IllegalArgumentException: wrong number of arguments while creating new instance with private constructor using reflection
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM