Mic*_*tte 5 java debugging stdout
我有一个用于调试的 Java 打印堆栈跟踪功能。
private static void printError(String message, Significance severityLevel, int stackTraceStart) {
final String thread_name = Thread.currentThread().getName();
final String location_of_print_statement = Thread.currentThread().getStackTrace()[stackTraceStart].toString();
Package_Private.printLineToReadout("\n" + "Thread \"" + thread_name + "\": "
+ location_of_print_statement + "\n" + message, ReadoutCondition.BAD, severityLevel);
}
Run Code Online (Sandbox Code Playgroud)
问题是它只打印“modules.ShopModule.configure(ShopModule.scala:8)”
我希望它打印该文件的整个路径,而不是相对路径。
有点太晚了,但可能对其他人有用。您可以使用ClassLoader来搜索特定类文件对应的资源。
import static java.lang.System.out;
import java.util.Arrays;
import java.net.URL;
public class Abs {
public static void main(String[] args){
Arrays.asList(Thread.currentThread().getStackTrace()).stream().forEach(e -> {
String cn = e.getClassName().replace('.', '/') + ".class";
URL u = new Abs().getClass().getClassLoader().getResource(cn);
out.println("" + u.toString().replace(".class", ".java") + ":" + e.getLineNumber());
});
}
}
Run Code Online (Sandbox Code Playgroud)
类似的讨论在这里:possible to get the file-path of the class that Called a method in Java? 这里Class.getResource() 和 ClassLoader.getResource() 有什么区别?