Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的Jersey JAX-RS服务器抛出一个关于不在RequestScope中的非法状态异常?_Java_Jersey_Jax Rs - Fatal编程技术网

Java 为什么我的Jersey JAX-RS服务器抛出一个关于不在RequestScope中的非法状态异常?

Java 为什么我的Jersey JAX-RS服务器抛出一个关于不在RequestScope中的非法状态异常?,java,jersey,jax-rs,Java,Jersey,Jax Rs,我已经研究这个问题太久了,找到了解决方案,并希望为后面的任何其他勇敢的JAX-RS冒险家提供反馈 错误: java.lang.IllegalStateException: Not inside a request scope. at com.google.common.base.Preconditions.checkState(Preconditions.java:149) at org.glassfish.jersey.process.internal.RequestScope

我已经研究这个问题太久了,找到了解决方案,并希望为后面的任何其他勇敢的JAX-RS冒险家提供反馈

错误:

java.lang.IllegalStateException: Not inside a request scope.
    at com.google.common.base.Preconditions.checkState(Preconditions.java:149)
    at org.glassfish.jersey.process.internal.RequestScope.current(RequestScope.java:226)
    at org.glassfish.jersey.process.internal.RequestScope.findOrCreate(RequestScope.java:154)
    at org.jvnet.hk2.internal.MethodInterceptorImpl.intercept(MethodInterceptorImpl.java:80)
    at org.glassfish.jersey.internal.inject.UriInfoInjectee$$EnhancerByCGLIB$$4cfd1aab.toString(<generated>)
    at java.lang.String.valueOf(String.java:2854)
    at java.lang.StringBuilder.append(StringBuilder.java:128)
    at au.csiro.esa.authrest.rest.resource.PingResource.setUriInfo(PingResource.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1011)
    at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:816)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:801)
    at org.glassfish.jersey.gf.cdi.CdiComponentProvider$1.inject(CdiComponentProvider.java:316)
    at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:158)
    at org.jboss.weld.context.AbstractContext.get(AbstractContext.java:103)
    at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:93)
    at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:79)
    at au.csiro.esa.authrest.rest.resource.PingResource$Proxy$_$$_WeldClientProxy.ping(Unknown Source)
....

答案是
URIInfo
上的
@Context
。它必须是这样的:

public void setUriInfo(@Context UriInfo uriInfo) {
        System.out.println("UserResource - set uriInfo:"+uriInfo);
        this.uriInfo = uriInfo;
    }

看起来很明显,不是吗!例外提到了URIInfo,那么我的问题是什么?我不知道,我只能认为我看到了与这个错误完全相同的东西,是由其他东西引起的,我改变了周围的东西,使之不正确(就像你在顶部看到的一大块代码)。异常似乎是相同的,它没有点击我实际上导致了一个不同的错误

不管怎么说,我走了,我的尾巴夹在两腿之间,感到有点高兴,我找到了问题的原因和解决办法。“网上什么都没有,所以我想我会和大家分享这篇文章。

我已经为这篇文章撰写了一篇文章。
public void setUriInfo(@Context UriInfo uriInfo) {
        System.out.println("UserResource - set uriInfo:"+uriInfo);
        this.uriInfo = uriInfo;
    }
@Context
protected UriInfo uriInfo;