【发布时间】:2014-12-18 09:04:51
【问题描述】:
在一个对象上调用的方法上的 js 脚本的 Nashorn eval 实际由其超类实现,委托给动态链接器。这将遍历类的整个层次结构并在其所有方法上构建一个 classWriter。如果超类包含几千个方法,它仍然会发出“方法代码太大”错误,超过 JDK 定义的 64K 限制。
var obj = SomeInitCode.getObjectOfCustomType();
var xyz = obj.doSomeOperation() // 这是在 obj 的超类 Abstract 上实现的方法。
Nashorn 引擎然后尝试创建一个适配器,但随后失败,因为在我的例子中,抽象类及其超类上有大约 6000 多个方法。
参考:
http://skrishnamachari.wordpress.com/2014/06/18/nashorn-bug/
还有可能访问最新的 Nashorn 源代码以便能够快速调试。至少找到一个 hack/validate 并让它一直供我们使用,直到提供最终补丁。
【问题讨论】:
-
NashornLinker.getSamTypeConverter(Class>, Class>), 如果“isSourceTypeGeneric”被强制为假,它在给出错误的测试中工作正常。那么,是否正如您所说的那样急切需要创建适配器类..?
标签: nashorn