java - 不允许对私有(private) Throwable 进行反射

标签 java spring google-app-engine

我将应用程序引擎与 Spring 一起使用,但出现以下异常:

java.lang.SecurityException: java.lang.IllegalAccessException: Reflection is not allowed on private java.lang.Throwable

使用 ResponseBody 序列化 Controller 的结果时会发生这种情况:

@RequestMapping("/mapping")
public @ResponseBody
Response handleRequest(Request request) {

Response 对象有一个私有(private) Throwable 及其 getter 和 setter。

为什么gae就不能反射(reflection)一下呢?

最佳答案

首先,安全异常(exception)是沙箱限制。沙盒类通常不允许使用反射来访问另一个类的私有(private)成员。 (有充分的理由)。据推测,GAE 要么本身已沙箱化,要么正在沙箱化您的类。

那么当你有私有(private)字段的 getter 和 setter 时,为什么会发生这种情况呢?

我的猜测是 getter 和/或 setter 方法的签名与私有(private)字段的名称和类型不完全匹配。或者也许它们无法访问。检查那些。如果这没有帮助,请尝试将私有(private) Throwable 字段公开(ick)作为实验。

关于java - 不允许对私有(private) Throwable 进行反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9491862/

相关文章:

java - 在 App Engine 上部署应用程序后出现时间戳问题

android - 测试 android webview html 5 应用程序

java - 三十ABP : How to validate date using a custom date format/DateTimeFormatter?

java - 在 Java 中使用 HikariCP 时如何指定数据库特定属性?

spring - 得到错误 : Could not load JDBC driver class [org. postgresql.Driver]

java - Spring集成中的并发处理

java - 在 GAE 中运行 Jersey 时出现 NoClassDefFoundError

java - 2个时区之间的Jodatime时差

java - 零比较

java - 使用多线程并行化 Java 中的 for 循环