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

Java 如何从堆栈跟踪中获取包数据[jar文件名]?,java,scala,log4j,logback,stack-trace,Java,Scala,Log4j,Logback,Stack Trace,在中,他们有一种方法可以获得“带有打包数据的堆栈跟踪”(包和包版本) 例如: 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) { ...

在中,他们有一种方法可以获得“带有打包数据的堆栈跟踪”(包和包版本)

例如:

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
}
试试这个

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));
}
for(StackTraceElement el:e.getStackTrace()){
Class clazz=Class.forName(el.getClassName());
字符串位置=clazz.getProtectionDomain().getCodeSource().getLocation().toString();
System.out.println(location.substring(location.lastIndexOf('/')+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));
}
for(StackTraceElement el:e.getStackTrace()){
Class clazz=Class.forName(el.getClassName());
字符串位置=clazz.getProtectionDomain().getCodeSource().getLocation().toString();
System.out.println(location.substring(location.lastIndexOf('/')+1));
}

p.s.我在网上完全看到了这样的代码,然后我就把它弄丢了。参见p.s.我在网上完全看到了这样的代码,然后我就把它弄丢了。参见