1

Netbeans 平台最近引入了基于注释的资源文件生成,例如包和 layer.xml 文件。

在 Netbeans 中拥有一个基于 Maven 的 Netbeans 平台项目(这些注释工作的地方)可以很容易地将相同的项目导入 Eclipse。

但是由于某种原因,即使项目被正确导入(或者至少它似乎被正确导入<--下载了必要的库等),上面提到的注释也不会被 Eclipse 执行。

症状缺少在使用这些注释的类中导入的生成类。

例子:

import org.netbeans.api.settings.ConvertAsProperties;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.windows.TopComponent;
import org.openide.util.NbBundle.Messages;

/**
 * Top component which displays something.
 */
@ConvertAsProperties(
    dtd = "-//org.something.ui//Exp//EN",
autostore = false)
@TopComponent.Description(
    preferredID = "ExpTopComponent",
//iconBase="SET/PATH/TO/ICON/HERE", 
persistenceType = TopComponent.PERSISTENCE_ALWAYS)
@TopComponent.Registration(mode = "output", openAtStartup = true)
@ActionID(category = "Window", id = "ExpTopComponent")
@ActionReference(path = "Menu/Window" /*, position = 333 */)
@TopComponent.OpenActionRegistration(
    displayName = "#CTL_ExpAction",
preferredID = "ExpTopComponent")
@Messages({
  "CTL_ExpAction=Example",
  "CTL_ExpTopComponent=Example Window",
  "HINT_ExpTopComponent=This is a Example window"
})
public final class ExpTopComponent extends TopComponent {

  public ExpTopComponent() {
    initComponents();
    setName(Bundle.CTL_ExpTopComponent());
    setToolTipText(Bundle.HINT_ExpTopComponent());
    putClientProperty(TopComponent.PROP_CLOSING_DISABLED, Boolean.TRUE);

  }

  private void initComponents() {
    setLayout(new java.awt.BorderLayout());

    outlineView1 = new org.openide.explorer.view.OutlineView();
    add(outlineView1, java.awt.BorderLayout.CENTER);
  }

  private org.openide.explorer.view.OutlineView outlineView1;
  @Override
  public void componentOpened() {
    // TODO add custom code on component opening
  }

  @Override
  public void componentClosed() {
    // TODO add custom code on component closing
  }

  void writeProperties(java.util.Properties p) {
    p.setProperty("version", "1.0");
    // TODO store your settings
  }

  void readProperties(java.util.Properties p) {
    String version = p.getProperty("version");
    // TODO read your settings according to their version
  }
}

如上面的示例所示,注释被广泛使用但未被 Eclipse 处理,这导致以下行无法编译,因为 Bundle(应自动生成)未被识别为已知类。

    setName(Bundle.CTL_ExpTopComponent());
    setToolTipText(Bundle.HINT_ExpTopComponent());

更多信息:

使用的 Eclipse 是 Juno,并且在项目属性中启用了注释处理。

有人知道如何在 Eclipse 中进行这项工作吗?

4

1 回答 1

0

事实证明,您还必须指定包含 netbeans 注释的注释处理器的库,这至少可以说是乏味的(无论如何,eclipse 中的注释处理似乎违反直觉)。

最有效的方法是在注释发生更改时在项目上运行一个简单的 maven 构建,并且一切顺利。

于 2014-06-12T21:37:57.320 回答