InjectionUtils无法访问类DateTimeZoneBuilder $ PrecalculatedZone的成员 [英] InjectionUtils can not access a member of class DateTimeZoneBuilder$PrecalculatedZone
问题描述
我正在尝试通过cxf实现发送发布请求。但是我得到
I am trying to send a post request with cxf implementation. But I am getting
java.lang.IllegalAccessException:类org.apache.cxf.jaxrs.utils.InjectionUtils无法访问其成员类org.joda.time.tz.DateTimeZoneBuilder $ PrecalculatedZone,带修饰符 public
java.lang.IllegalAccessException: Class org.apache.cxf.jaxrs.utils.InjectionUtils can not access a member of class org.joda.time.tz.DateTimeZoneBuilder$PrecalculatedZone with modifiers "public"
我的方法接口是:
@GET
@Path("history")
HistoryResult getHistory(@Valid @QueryParam("") HistoryParameters historyParameters)
HistoryParameters具有两个joda时间LocalDate:
公共类HistoryParameters {
HistoryParameters has two joda time LocalDate : public class HistoryParameters {
@NotNull
@QueryParam("historyType")
private HistoryType historyType;
@FieldDescription(title = "Archive from date", value = "Archive from date")
@QueryParam("archiveFromDate")
private LocalDate archiveFromDate;
@FieldDescription(title = "Archive to date", value = "Archive to date")
@QueryParam("archiveToDate")
private LocalDate archiveToDate;
public HistoryParameters() {
}
...
}
这里是堆栈跟踪:
java.lang.IllegalAccessException:类org.apache。 cxf.jaxrs.utils.InjectionUtils无法访问带有修饰符 public的类org.joda.time.tz.DateTimeZoneBuilder $ PrecalculatedZone的成员,位于sun.reflect.Reflection.Reflection.ensureMemberAccess(Reflection.java:109)
在java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:261)
在java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:253)
在java.lang。在org.apache.cxf.jaxrs.utils.InjectionUtils.extractFromMethod(InjectionUtils.java:324)
(在org.apache.cxf.jaxrs)上的Reflection.Method.invoke(Method.java:599)
。 utils.InjectionUtils.extractFromMethod(InjectionUtils.java:316)
在org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1147)
org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174)
org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174)
在org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174)
处在org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174)
在org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174)
在org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174)
在org.apache.cxf.jaxrs.utils.InjectionUtils.extractValuesFromBean(InjectionUtils.java:1109)
在org.apache.cxf.jaxrs.client.ClientProxyImpl.handleQue上的
(org.apache.cxf.jaxrs.client.AbstractClient.addMatrixQueryParamsToBuilder(AbstractClient.java:677)
ries(ClientProxyImpl.java:455)
在org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:178)
在com.sun.proxy。$ Proxy78.getHistoryEntries(未知源)
java.lang.IllegalAccessException: Class org.apache.cxf.jaxrs.utils.InjectionUtils can not access a member of class org.joda.time.tz.DateTimeZoneBuilder$PrecalculatedZone with modifiers "public" at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:109) at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:261) at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:253) at java.lang.reflect.Method.invoke(Method.java:599) at org.apache.cxf.jaxrs.utils.InjectionUtils.extractFromMethod(InjectionUtils.java:324) at org.apache.cxf.jaxrs.utils.InjectionUtils.extractFromMethod(InjectionUtils.java:316) at org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1147) at org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174) at org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174) at org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174) at org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174) at org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174) at org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174) at org.apache.cxf.jaxrs.utils.InjectionUtils.fillInValuesFromBean(InjectionUtils.java:1174) at org.apache.cxf.jaxrs.utils.InjectionUtils.extractValuesFromBean(InjectionUtils.java:1109) at org.apache.cxf.jaxrs.client.AbstractClient.addMatrixQueryParamsToBuilder(AbstractClient.java:677) at org.apache.cxf.jaxrs.client.ClientProxyImpl.handleQueries(ClientProxyImpl.java:455) at org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:178) at com.sun.proxy.$Proxy78.getHistoryEntries(Unknown Source)
推荐答案
我解决了我的问题,而不是使用内省的@QueryParam()所有属性,我都使用@BeanParam批注,但要注意在pojo中的@QueryParam(在我的示例中为HistoryParameters)必须在setter上设置。
I fixed my issue instead of using @QueryParam("") which introspect all attributes, I used @BeanParam annotation but be careful @QueryParam inside the pojo (HistoryParameters in my example) have to be set on setter.
这篇关于InjectionUtils无法访问类DateTimeZoneBuilder $ PrecalculatedZone的成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!