JavaScript 到 Java 字节码的编译是否在运行时发生?好像是这样。
因为当我使用
gradlew build
构建项目时,我没有看到任何与 Eclipse BIRT 相关的错误或警告。
当我调用 REST 端点来生成报告时,仅出现以下错误:
-----
A BIRT exception occurred. See next exception for more information.
Encountered code generation error while compiling function "39": generated bytecode for method exceeds 64K limit.
org.eclipse.birt.data.engine.core.DataException: Fail to execute script in function __bm_FETCH(). Source:
------
是否可以预先知道哪些脚本超出了 64K 限制?因为有相当多的脚本(20+)需要手动测试
BIRT 报告只是 XML 文件。 Javascript 以文本形式存储在其中(或单独的 *.js 文件中)。 在运行时,Rhino Javascript 引擎(用 Java 编写的 Javascript 实现)将脚本编译为 Java 字节码。 请注意,您可以将多个报告所需的实用程序代码存储在 *.js 文件中(请参阅报告属性的资源属性选项卡)。
顺便说一句,因为 BIRT 仅支持(大部分)旧的 ECMAScript 5 标准,并且因为 JS 本身不太适合复杂的代码(与 Typescript 相比),所以我建议尽可能避免使用大型脚本。
手动测试报告中的 20-30 个脚本是否正常工作应该不会花很长时间。 创建一个尝试自动检查这一点的测试程序需要更多的工作。我建议仅当您希望定期切换 BIRT 和 Java 版本时才自动执行此操作。但是OTOH,您可以创建一个测试脚本来运行所有这些报告和测试(如果它们按预期工作)。