InjectionUtils无法访问DateTimeZoneBuilder $ PrecalculatedZone类的成员

时间:2014-11-10 08:55:43

标签: java cxf jodatime

我正在尝试使用cxf实现发送帖子请求。但我得到了

  

java.lang.IllegalAccessException:类org.apache.cxf.jaxrs.utils.InjectionUtils无法使用修饰符&#34; public&#34; <访问类org.joda.time.tz.DateTimeZoneBuilder $ PrecalculatedZone的成员/ p>

我的方法界面是:

@GET
@Path("history")
HistoryResult getHistory(@Valid @QueryParam("") HistoryParameters historyParameters)

HistoryParameters有两个joda时间LocalDate:     公共类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无法访问类org.joda.time.tz.DateTimeZoneBuilder的成员$ PrecalculatedZone with modifiers&#34; public&#34;       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)       在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)       在org.apache.cxf.jaxrs.client.AbstractClient.addMatrixQueryParamsToBuilder(AbstractClient.java:677)       在org.apache.cxf.jaxrs.client.ClientProxyImpl.handleQueries(ClientProxyImpl.java:455)       在org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:178)       在com.sun.proxy。$ Proxy78.getHistoryEntries(未知来源)

1 个答案:

答案 0 :(得分:0)

我修复了我的问题,而不是使用内省所有属性的@QueryParam(“”),我使用了@BeanParam注释,但要注意pojo中的@QueryParam(我的例子中的HistoryParameters)必须在setter上设置。