我在
下面有一个堆栈跟踪数组StackTraceElement[] stackTrace = e.getStackTrace();
从下面的堆栈跟踪中我需要得到mypackage的第一行。
org.apache.cxf.jaxrs.client.AbstractClient.checkClientException(AbstractClient.java:522)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:544)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:205)
at $Proxy94.run(Unknown Source)
at com.mypackage.service.BankBridgeServiceTest.test(BankBridgeServiceTest.java:507)
com.mypackage.service.BankBridgeServiceTest.test(BankBridgeServiceTest.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
我写了像
这样的代码for(StackTraceElement stackTraceElement : stackTrace){
if(!stackTraceElement.isNativeMethod())
{
System.out.println(stackTrace.toString())
break;
}
}
但它不起作用。你能帮助我吗?。
答案 0 :(得分:0)
使用stackTraces [0] .getClassName()并从那里找出包。
实施例
public class StackError {
public static void throwEX() {
int x = 4 / 0;
}
public static void method2() {
throwEX();
}
public static void main(String[] args) {
try {
method2();
} catch (Exception e) {
e.printStackTrace();
StackTraceElement[] stackTraces = e.getStackTrace();
if(!stackTraces[0].isNativeMethod())
System.out.println("Class Name :: "+stackTraces[0].getClassName());
}
}
}
输出 - 类名:: content_management.School.service.StackError
希望这有帮助