我在添加自定义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());
打开编辑器时我是否还需要做其他事情?
任何建议...... ???
答案 0 :(得分:2)
您可以将代码与应该正常工作的代码进行比较,如 bug 73420 中所示。
那个旧bug(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);
}
答案 1 :(得分:0)
早些时候我已将我的代码转储到行动中。但在我用项目构建器替换它后,它开始工作......
我不知道出了什么问题.. :)