我有一个用于调试的Java打印堆栈跟踪功能。
const renderData = this.state.authors.map(function(author) {
return (
<div>
<p>{author.id}</p>
<p>{author.firstName}</p>
<p>{author.lastName}</p>
</div>
)
});
问题是它只打印“modules.ShopModule.configure(ShopModule.scala:8)”
我希望它打印到该文件的整个路径,而不是相对路径。
答案 0 :(得分:0)
有点太晚了,但对其他人可能有用。 您可以使用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());
});
}
}
此处有类似的讨论:Possible to get the file-path of the class that called a method in Java?和What is the difference between Class.getResource() and ClassLoader.getResource()?