我遇到了一个非常奇怪的情况。我的应用程序中的反射可以在Tomcat7上工作,但不能在Tomcat8上工作。我使用反射来按名称检查生成对象的公共字段。
实际情况是,当应用程序在Tomcat8上运行时,会出现非法访问异常。
Field field = response.getClass().getDeclaredField(RESPONSE_FIELD);
field.setAccessible(true);
// get response status
String status = (String) field.get(response);
java.lang.IllegalAccessException: Class com.ccf.services.DistributedCustomerCareService can not access a member of class com.ccf.generated.CcfGetProfileRes with modifiers "protected".
我不知道这个错误怎么可能,有人知道吗?
注意:Java 7在两台电脑上都使用。
这似乎是Tomcat和/或从XSD生成的类的一些临时问题。经过两次重新部署,问题自行解决。