Java从堆栈跟踪中获取文件的绝对路径

时间:2016-02-07 04:29:18

标签: java debugging stdout

我有一个用于调试的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)”

我希望它打印到该文件的整个路径,而不是相对路径。

1 个答案:

答案 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()?