Eclipse标记不可见。

4
我在添加自定义eclipse标记时遇到了一个奇怪的问题。情况是这样的,当我添加标记时,如果资源(我需要添加标记的资源)已经打开,则标记图标是可见的。但是如果资源没有打开,则会添加标记,但图标不可见。
这是我正在使用的代码片段:
<extension
         id="HighPriority"
         name="High Priority problem"
         point="org.eclipse.core.resources.markers">
      <persistent value="true">
      </persistent>
      <super type="org.eclipse.core.resources.problemmarker"/>
      <super type="org.eclipse.core.resources.textmarker"/>
 </extension>

 <extension point="org.eclipse.ui.editors.annotationTypes">
      <type
         name="X.X.X.HighPriorityAnnotation"
         super="org.eclipse.ui.workbench.texteditor.warning"
         markerType="X.X.X.HighPriority"/>

 </extension>
 <extension point="X.X.X.markerAnnotationSpecification">
      <specification
            annotationType="X.X.X.HighPriorityAnnotation"
            icon="icons\img.gif"
       />

 </extension>

创建标记的代码是:

IMarker marker = markerNode.getTargetFile().createMarker(markerNode.getPriority().getMarkerName());

Map<String, Object> attributes = new HashMap<String,Object>();
attributes.put(IMarker.LINE_NUMBER, markerNode.getLineNumber());
attributes.put(IMarker.SEVERITY, Integer.valueOf(IMarker.SEVERITY_WARNING));
attributes.put(IMarker.MESSAGE, markerNode.getMessage());
attributes.put(IMarker.PRIORITY, Integer.valueOf(IMarker.PRIORITY_HIGH));
marker.setAttributes(attributes);

我使用以下代码打开编辑器

IDE.openEditor(this.getSite().getPage(), marker, OpenStrategy.activateOnOpen());

在打开编辑器的同时,我需要做些什么吗?

有任何建议吗?

2个回答

2
您可以参考已发布在 bug 73420 中的代码,与您的代码进行比较,以确保其正常工作。
虽然那个旧版本的Eclipse(3.1)与您使用的版本不同,但仍可为您提供一些线索或想法来尝试解决问题。
请问您正在使用哪个版本的Eclipse和Java?

以下是从该错误报告中提取的内容:

此代码也能正常工作。

IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

IMarker[] markers = root.findMarkers(IMarker.PROBLEM, false, IResource.DEPTH_ZERO);

for (int i = 0; i < markers.length; i++) {
  String message = (String) markers[i].getAttribute(IMarker.MESSAGE);

  if (message != null && message.startsWith("this is a test")) {
    markers[i].delete();
  }
}

//IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
Map attribs = new HashMap();
for (int i = 0; i < 8; i++) {
  attribs.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
  attribs.put(IMarker.MESSAGE, "this is a test " + i);
  attribs.put("bogus field", "some text");
  MarkerUtilities.createMarker(root, attribs, IMarker.PROBLEM);
}

嗨,我正在使用Eclipse 3.5和JDK 5。您提供的代码将向IWorkspaceRoot添加标记?但是我想要将标记添加到特定文件中。我尝试了那段代码,但它没有起作用...我怀疑在Plugin.xml中漏掉了一些东西... - Vinay Lodha
@VinAy:我提供的代码只是从错误报告中找到的副本,不一定适用于您的情况。这只是为了 - 希望 - 给您一些可能缺失的元素的想法。如果您发现其他细节,我很感兴趣 ;) - VonC

0

之前我把我的代码放进了操作中。但是在我用项目构建器替换后,它开始工作了...

我不知道出了什么问题... :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接