如何在kotlin中通过编程方式通过编译类文件查找源文件路径?

如何在kotlin中通过编程方式通过编译类文件查找源文件路径?,kotlin,Kotlin,在kotlin中,包可以随机声明,这与源文件路径无关,编译器将在包文件夹中生成类文件。如何通过编程方式通过编译类文件查找源文件路径 例如: package kt.notsamepackage_another class NotSamePackageKotlin { fun call() { } } NotSamePackageKotlin.class将在以下文件夹中生成:../kt/notsamepackage\u其他文件夹,但源文件可能在../kt/notsamepack

在kotlin中,包可以随机声明,这与源文件路径无关,编译器将在包文件夹中生成类文件。如何通过编程方式通过编译类文件查找源文件路径

例如:

package kt.notsamepackage_another

class NotSamePackageKotlin {

    fun call() {
    }
}
NotSamePackageKotlin.class将在以下文件夹中生成:../kt/notsamepackage\u其他文件夹,但源文件可能在../kt/notsamepackage中

我尝试了以下方法:

  • 反编译类文件。但在字节码中找不到源文件路径
  • 调整kotlin编译器参数。我想找到一个参数来输出包含路径关系的映射,但找不到任何内容
  • 递归遍历源文件夹。这种方法效率不高,是最后的选择

  • 有没有更有效的方法?

    我认为这是不可能的。如果完整的源路径没有编译成字节码,那么就无法通过编程方式找到它。而且我不知道有任何编译器参数可以做到这一点(当然,简单文件名通常是在中编译的;这就是堆栈跟踪如何显示引发异常的文件名和行号,但不是完整路径。)

    即使您的第三种方法通常也不起作用;程序通常不会在编译它们的同一台机器上运行,因此您的代码必须做出一些非常危险的假设

    但我很好奇你为什么想知道这些。你想解决什么问题