在eclipse外部工具中单击堆栈跟踪

时间:2010-08-27 14:35:29

标签: java eclipse

我正在使用Eclipse的外部工具功能来启动我的测试服务器(我不能使用普通的服务器视图,因为它不受支持)。

这样可以正常工作,但是我无法单击堆栈跟踪以自动跳转到代码中的那一行(正如您通常所做的那样)。我一直认为eclipse的控制台会自动识别代码行。

有没有办法让它为外部工具做到这一点?

由于

2 个答案:

答案 0 :(得分:1)

您可以将堆栈跟踪复制到Java Stack Trace控制台。在控制台中,切换到新的Java堆栈跟踪控制台,粘贴堆栈跟踪,它将立即可单击。

另外,查看LogViewer plugin,据我所知,它可以用更少的努力来做到这一点

答案 1 :(得分:1)

作为一种解决方法,我创建了一个简单的Java包装程序,该程序执行作为参数给出的命令。这样可以使用Eclipse Java运行配置代替外部工具。

public class Exec {
    private final Process process;
    private boolean error;

    public Exec(Process process) {
        this.process = process;
    }

    public static void main(String[] command) throws Exception {
        new Exec(Runtime.getRuntime().exec(command)).run();
    }

    public void run() throws Exception {
        Thread thread = new Thread(() -> copy(process.getInputStream(), System.out));
        thread.start();
        copy(process.getErrorStream(), System.err);

        int status = process.waitFor();
        thread.join();
        System.err.flush();
        System.out.flush();
        System.exit(status != 0 ? status : error ? 1 : 0);
    }

    private void copy(InputStream in, OutputStream out) {
        try {
            byte[] buffer = new byte[4096];
            for (int count; (count = in.read(buffer)) > 0;) {
                out.write(buffer, 0, count);
            }
        } catch (IOException e) {
            error = true;
            e.printStackTrace();
        }
    }
}