我正在尝试使用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(未知来源)
答案 0 :(得分:0)
我修复了我的问题,而不是使用内省所有属性的@QueryParam(“”),我使用了@BeanParam注释,但要注意pojo中的@QueryParam(我的例子中的HistoryParameters)必须在setter上设置。