Eclipse的奇怪问题总结(不断更新)
1.有的时候在project的java build path中定义好了一些jar包依赖,但是project在运行的时候仍然报NoClassDef的错误.这是因为project的MANIFEST.MF文件没有更新.手动在MANIFEST.MF加上那些jar包就可以了.2.Plugin A 依赖 Plugin B.B也把相应的package export出来了,但是A还是找不到B里面定义的类.修改A的MANIFEST.MF文件,在dependence tab里去掉Plugin B,再添加B.此时发现有5,6个同样的Plugin B出现在选择plugin的list中.cancel 掉该对话框,然后重启eclipse,在A的dependence里面重新加上B,问题解决.
3.当我们通过在plugin.xml中用extension的方式定义action的时候,你会发现你定义的actionset和action在GUI出现的顺序不是你可以控制的,就是说同一个actionset下的多个action不是按你定义的先后顺序出现在程序的界面上的,这样对action进行排序呢?其实仔细观察一下,你会发现action在GUI出现的顺序是和你定义action的顺序相反的,比如你先后定义了3个action A,B,C,那么你就会在GUI上看见action的顺序是C,B,A.如果你定义了多个actionset,你会发现这个规律不适用与actionset,actionset在界面上出现的顺序其实是和它的id的排序相反的.比如你定义了三个actionset,它们的id分别是:seta,setb,setc,你会发现GUI上出现的顺序是setc,setb,seta
4.双击激活TreeViewer的celleditor
JFace的Viewer都有单元格编辑功能,但是celleditor默认的实现是单击激活editor,双击选中item.如果需要改成单击选中item,双击激活editor呢?Eclipse的官网上好像也有人问到这个问题,不过目前好像是开了一个bug,期待eclipse的下个版本解决这个问题.但最近找到了一个用SWT来解决这个问题的方法:
Tree tree=treeViewer.getTree();
final TreeEditor editor = new TreeEditor(tree);
editor.horizontalAlignment = SWT.LEFT;
editor.grabHorizontal = true;
// Use a mouse listener, not a selection listener, because you're
// interested
// in the selected column as well as row
tree.addMouseListener(new MouseAdapter() {
public void mouseDoubleClick(MouseEvent event) {
final TreeItem item = tree.getSelection()[0];
// Create a text field to do the editing
final Text text = new Text(tree, SWT.NONE);
text.setText(item.getText());
text.selectAll();
text.setFocus();
text.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent event) {
text.dispose();
}
});
// Set the text field into the editor
editor.setEditor(text, item);
}
});