public static void printCurrentStackTrace() {
    try {
        StackTraceElement[] cause = Thread.currentThread().getStackTrace();
        if(cause==null || cause.length==0)
            return;

        // 1st stack is skipped
        for( int i=0 ; i<cause.length ; i++ ) {
            if(i==1)
                continue;
            System.err.println(cause[i].toString());
        }
    } catch(SecurityException e) {
        e.printStackTrace();
        return;
    }
}

public static void printErrorAndStackTrace(String err) {
    System.err.println(err);
    
    try {
        StackTraceElement[] cause = Thread.currentThread().getStackTrace();
        if(cause==null || cause.length==0)
            return;

        // 1st stack is skipped
        for( int i=0 ; i<cause.length ; i++ ) {
            if(i==1)
                continue;
            System.err.println(cause[i].toString());
        }
    } catch(SecurityException e) {
        e.printStackTrace();
        return;
    }
}
Posted by 배트
,