我有一个非常奇怪的情况。我的应用程序中的反射适用于 Tomcat 7,但不适用于 Tomcat 8。 我正在使用反射按名称检查生成对象的公共(public)字段。
发生的事情是,当应用程序在 Tomcat 8 上运行时,出现非法访问异常。
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".
我不知道这个错误是怎么可能的,有没有人有想法?
注意:两台 PC 上都使用 Java 7。
最佳答案
这似乎是 Tomcat 和/或从 XSD 生成的类的一些临时问题。两次重新部署后,问题自行解决。
关于java - Tomcat 8 无法通过反射访问 protected 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31184168/