如何从堆栈跟踪中获取包数据[jar文件名]?

时间:2016-04-16 22:08:01

标签: java scala log4j logback stack-trace

logback library中,他们可以通过打包数据来获取#34; (包装和包装版本)。

示例:

java.lang.Exception: 99 is invalid
  at path.to.MyClass.myFunc(MyClass.java:431) [struts-1.2.9.jar:1.2.9]

我如何得到" struts-1.2.9.jar"从堆栈跟踪中的一行?

Java或Scala中是否有这样做的方法?

String getPackageName(String lineInTrace) {
    ...
    return packageName
}

1 个答案:

答案 0 :(得分:1)

试试这个

for (StackTraceElement el : e.getStackTrace()) {
    Class<?> clazz = Class.forName(el.getClassName());
    String location = clazz.getProtectionDomain().getCodeSource().getLocation().toString();
    System.out.println(location.substring(location.lastIndexOf('/') +1));
}