我在服务器端使用 hibernate,并通过 Java Web Start 启动客户端应用程序。 我无法在 jar 上签名(我想但不能)。当我获得带有惰性字段的 POJO 时,出现权限异常。
原因:java.security.AccessControlException:访问被拒绝(java.util.PropertyPermission cglib.debugLocation 读取) 在 java.security.AccessControlContext.checkPermission(来源未知) 在 java.security.AccessController.checkPermission(来源未知) 在 java.lang.SecurityManager.checkPermission(来源未知) 在 java.lang.SecurityManager.checkPropertyAccess(来源未知) 在 java.lang.System.getProperty(来源未知) 在 net.sf.cglib.core.DebuggingClassWriter.(DebuggingClassWriter.java:35) ... 44 更多
我怎样才能避免这种情况?我考虑过在将 pojo 返回给客户端之前将集合设置为 null,但我想找到更好的解决方案。
最佳答案
您有两个选择:
- 对应用程序中的所有 jar 进行签名;
- 从 cglib 更改字节码提供程序 javassist 不是这样的 行为(即您只能签署 必要的 jar )。-
另请参阅有关该问题的新闻 here .
关于Java Web 启动 : unsigned cglib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1519052/