【发布时间】:2013-10-13 19:43:59
【问题描述】:
因为 scala 类名可能与源文件名不匹配。
如何在 jar 中找到 scala 类型所属的 .class 文件。
scala.reflect.api.Symbols.Symbol 类型中,有一个值叫做 associatedFile,但它总是返回 null
scala> typeOf[List[_]].typeSymbol.associatedFile
res4: scala.reflect.io.AbstractFile = null
如何以编程方式获取类文件名?
更详细:如果我得到二进制/源 jar,例如 scala-library.jar ,scala-library-src.jar。如何判断源 jar 中的哪个源文件来自二进制 jar 中的类。
Scala 演示文稿编译器可以告诉这些信息吗?
【问题讨论】:
-
这是一个已知问题:issues.scala-lang.org/browse/SI-7044
-
运行时实际上并不关心源在哪里,因为它在编译的
.class文件上运行。我并不是说不存在“快捷方式”(不是自定义)解决方案,但我真诚地怀疑它是否是标准 if 的一部分。当然,你总是可以开发一个自制算法,但我怀疑这就是你想要的。 -
@TheTerribleSwiftTomato 你认为索引源 jar 并存储类 -> 运行时使用的源关系是个好主意吗?
标签: java scala scala-compiler