在Java调试器接口文档中的Location类中,有一个段落讨论了位置的“层”,我一直在寻找更多关于如何实现新层(例如Scala或JRuby)的详细信息,但是我没有找到太多。是否有人可以对这个主题进行解释?
对于Scala或JRuby来说,Strata并不是特别适合,因为它们直接编译成字节码,因此SourceFile和LineNumberTable属性就足够了。Strata适用于像JSP这样的东西,它们被翻译成Java源文件,然后再进行编译。这些Strata是由一个存储在SourceDebugExtension属性中的源映射(SMAP)定义的。所有这些工作的详细信息都是JSR-45的一部分。JSR-45。另一个例子是状态机编译器,不过我不认为它会生成一个SMAP。我也不确定javac是否有选项可以将SMAP嵌入到类文件中。如果需要的话,您需要使用单独的工具来完成这个任务。