2016-04-16 31 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)); 
}