如何解决如果未找到引用的Java类或将其列入黑名单,何时检测到它?
| 我想在Google Appengine中使用一个小型图书馆;它的某一类的方法之一(例如MyClass.writeToFile()
)使用java.io.FileOutputStream
,它在黑名单中(不是白名单)。
这是否意味着MyClass
将在类加载时或在尝试调用有问题的方法时失败?在什么时候完成检查(\“ FileOutputStream not \\”)?当加载“ 2”文件并检测到它“引用/依赖于” FileOutputStream时(我不知道这是否在“ 2”字节码中声明了)?还是在第一次调用MyClass.writeToFile()
时尝试加载FileOutputStream
?
此外,假设方法MyClass.writeToFile()
对我的库不是必不可少的(但MyClass
是必需的),是否有一些解决方法,还是应该重构该库(并构建两个不同的jar,一个成熟的,对其他沙盒友好的)?
解决方法
做一个测试部署。如果我没记错的话,部署应该会失败。某个特定类使用的类是字节码的一部分,Google正在对其进行验证。
编辑:我很矛盾:)此线程表明只有在加载FileOutputStream类时部署才会失败:
GoogleAppEngine:可以禁用FileUpload吗?
Edit2:这表明正在检查/停止加载禁止类的是类加载器:Sandbox
,在第一次参考时,类是延迟加载的。如果您的代码从不尝试使用FileOutputStream,那么应该没有问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。