Eclipse控制台链接,包结构中重复的文件名,哪个打开了?

Mik*_*ike 5 java eclipse

我有一个应用程序,该应用程序在包结构的两个不同位置具有两个称为“服务”的类。日志记录将像这样输出文件和行号,例如:(Service.java:102)这将成为Eclipse中控制台输出中的可单击链接。通常,这些链接非常有用,因为您只需单击一下即可找到打印输出的确切位置。但是,现在我有两个Service.java文件,它们执行两种完全不同的操作,并且它们在包结构中的位置不同。我不能重命名任何一个。当我单击链接时,即使在编辑器中打开了正确的Java文件,它也会带我到错误的Java文件。

我到处搜寻,但是找不到答案。有没有办法告诉Eclipse首先要考虑哪个Java文件?还是一种告诉先看哪个包的方法?可以使这些可点击链接再次有用的东西吗?

die*_*ter 1

我知道如何在控制台输出中打印可点击的类链接的三种方法。

第一种方式:

只需在括号内打印类名:System.out.println("(Service.java:42)");

这是一个简单的方法,如果您不使用不明确的类名,它将起作用。由于 Eclipse 控制台没有决定应打开哪个文件所需的信息,我猜它会打开第一次出现的情况。

第二种方式:

就你而言。我会通过 StackTraceElement打印类名来做到这一点。那样:

StackTraceElement element = new StackTraceElement(
            "Service",                          // Class name
            "myFunnyMethodName",                // Method name
            Service.class.getName()+".java",    // Path to File
            2);                                 // line number


System.out.println(element);
Run Code Online (Sandbox Code Playgroud)

第三种方式:

如果您不想创建,StackTraceElement可以从当前线程中获取它。

例子:

System.out.println(Thread.currentThread().getStackTrace()[1]);
Run Code Online (Sandbox Code Playgroud)

编辑:

另一种选择是尝试Eclipse 的 Grep Console Plugin。您可以使用链接、颜色、弹出窗口等定义您自己的表达式...