2016-04-16 32 views
0

logback library中,他们有办法获得“堆栈跟踪与封装数据”(封装和封装版本)。如何从堆栈跟踪中获取包数据[jar文件名]?

例子:

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或斯卡拉这样做的方法?

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

附:我完全看到这样的代码在线,然后我失去了它。 –

+0

请参阅[确定类是从哪个jar文件](http://stackoverflow.com/questions/1983839/determine-which-jar-file-a-class-is-from) – saka1029

回答

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)); 
}