簡體   English   中英

使Netbeans平台注釋在Eclipse中工作

[英]Getting Netbeans Platform Annotations working in Eclipse

Netbeans平台最近引入了基於注釋的資源文件生成,例如捆綁軟件和layer.xml文件。

在Netbeans中有一個基於Maven的Netbeans Platform項目(這些注釋在其中工作),可以很容易地將相同的項目導入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中完成此工作有任何想法?

事實證明,您還必須指定包含netbeans批注的批注處理器的庫,至少可以這樣說很乏味(無論如何,eclipse中的批注處理似乎是反直觀的)。

最好的方法是,每當注釋被更改並且一切順利時,就在項目上運行一個簡單的Maven構建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM