标记转储显示IMarker.LINE_NUMBER和IMarker.CHAR_START插件开发标记的空值

时间:2012-07-30 21:33:35

标签: eclipse plugins markers

我有以下通用代码,它将所有标记转储到系统中的所有属性。如果我设置了一些断点,则LINE_NUMBER和IMarker.CHAR_START的值始终显示为null,尽管它们具有清除值。 有人可以帮助理解吗?

private void printAllMarkers() {
        IMarker[] markers = null;
        IWorkspace root = ResourcesPlugin.getWorkspace();
        IProject projects[] = root.getRoot().getProjects();
        for (IProject p : projects) {
            try {
                markers = p.findMarkers(IMarker.MARKER, true, IResource.DEPTH_INFINITE);
                System.out.println("\nAll Markers Are: ");
                for (IMarker m : markers) {
                    System.out.println("-----------Marker of Type: " + m.getType());
                    dumpMarker(m);
                }
            } catch (CoreException e) {
                e.printStackTrace();
            }
        }
    }



    public static void dumpMarker(IMarker m) {
        try {
            for (String attrName : m.getAttributes().keySet()) {
                System.out.println("Attribute:" + attrName + "=" + m.getAttribute(attrName, null));
            }
        } catch (CoreException e) {
            e.printStackTrace();
        }
    }

1 个答案:

答案 0 :(得分:0)

我发现了问题。这是一个Eclipse错误,如果它来自'超类型',则将该值显示为null 所以即使属性存在,getAttribute(attrName,null)也会为lineStart返回null。