如何猜测声明Groovy类的文件

如何猜测声明Groovy类的文件,groovy,Groovy,出于调试目的,我希望在运行时能够显示定义给定类的.groovy源文件。可能是天生的吗 请注意,groovy类可能不在stacktrace中,而是在参数中给定的类。结果将是一个带有签名的函数: String getSourceInfo(Class<?> clazz) {...} //returns /home/user/work/..../SomeClass.groovy 如果没有,我正在考虑添加Groovy AST,并在类节点上添加注释。这应该不会太难,因为我们有所有需要的信息(例

出于调试目的,我希望在运行时能够显示定义给定类的.groovy源文件。可能是天生的吗

请注意,groovy类可能不在stacktrace中,而是在参数中给定的类。结果将是一个带有签名的函数:

String getSourceInfo(Class<?> clazz) {...} //returns /home/user/work/..../SomeClass.groovy

如果没有,我正在考虑添加Groovy AST,并在类节点上添加注释。这应该不会太难,因为我们有所有需要的信息(例如语义分析),但可能有一些标准方法。有什么建议吗?

我记得在Java中获取一些运行时信息的技术,如果Groovy脚本仍然处于活动状态是可以的,但是当它已经死亡时(事后分析)不适合:


//不抛出,只获取信息

请注意:可能存在没有文件的类,例如从承载Groovytry@Jacek的Java应用程序编译“it the fly”:是的。在这种情况下,唯一可用的信息是脚本的名称(通常是生成的)Runtime@Ashraf:在这种情况下,.class文件位置对我不感兴趣。我希望能够将用户引导到他编写的.groovy文件,但在我的例子中,当前的stacktrace可能无法通过所需的groovy类。将我的问题编辑得更清楚
String getSourceInfo(Field field) {...} //returns /..../SomeClass.groovy#13:5
            e= new Exception();
            StackTraceElement[] st = e.getStackTrace();
            for(StackTraceElement s:st)
            {
                s.getLineNumber()
            }