"Source not found" 单击堆栈跟踪时

"Source not found" when clicking on stacktrace

通常,单击堆栈跟踪中的一行,源文件会在有问题的行处打开。使用 Eclipse-oxygen(安装了支持 java9 的 R)和 java9 (u175),如果源位于 java 模块内的某处,它会显示一个对话框 "Source not found"。在编辑器中导航(按 F3)时,按预期找到了源。

s/where 有什么问题以及如何解决?

下面是一个简单的两行示例,它失败了,显示了堆栈跟踪:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 5 out-of-bounds for length 0
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
    at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
    at java.base/java.util.Objects.checkIndex(Objects.java:372)
    at java.base/java.util.ArrayList.set(ArrayList.java:453)
    at dummy.PlainStacktrace.main(PlainStacktrace.java:10)

二线:

import java.util.ArrayList;

public class PlainStacktrace {

    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.set(5, "error");
    }

}

这是 bug 518829,应在最近的版本中解决。

注意:在 Java 9 和 Eclipse 对它的支持正式发布之前,定期更新 JDK 和 Eclipse 部分可能是个好主意。