【发布时间】:2014-12-07 09:34:33
【问题描述】:
在我的 JavaScript (https://gist.github.com/also/005fd7c200b20f012e10) 上运行 jjs 或 ScriptEngine#eval 会崩溃并出现此异常并且没有更多详细信息:
Exception in thread "main" java.lang.RuntimeException: Method code too large!
at jdk.internal.org.objectweb.asm.MethodWriter.getSize(MethodWriter.java:2065)
at jdk.internal.org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:856)
at jdk.nashorn.internal.codegen.ClassEmitter.toByteArray(ClassEmitter.java:577)
at jdk.nashorn.internal.codegen.CompilationPhase$8.transform(CompilationPhase.java:396)
at jdk.nashorn.internal.codegen.CompilationPhase.apply(CompilationPhase.java:513)
at jdk.nashorn.internal.codegen.Compiler.compile(Compiler.java:361)
at jdk.nashorn.internal.runtime.Context.compile(Context.java:1071)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:1019)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:490)
at jdk.nashorn.tools.Shell.runScripts(Shell.java:306)
at jdk.nashorn.tools.Shell.run(Shell.java:168)
at jdk.nashorn.tools.Shell.main(Shell.java:132)
at jdk.nashorn.tools.Shell.main(Shell.java:111)
如何找出导致方法代码过大的原因?我已经尝试了jjs (--log=codegen:info) 的一些日志选项,但我没有看到任何指向罪魁祸首的东西。
我已经使用 Java 版本 1.9.0-ea-b34 和 1.8.0_20-b26 进行了测试。
【问题讨论】:
标签: java javascript java-8 nashorn java-9