1

Netbeans平臺最近推出了annotations-based資源文件,如bundles和layer.xml文件。獲取在Eclipse中工作的Netbeans平臺註釋

在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 
    } 
} 

如在上面的例子中看到的那樣,註釋extensivly使用,但不被Eclipse的,這導致以下行不編譯因爲束(其應自動生成的)處理不是承認爲已知類。

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

更多信息:

使用Eclipse是朱諾和項目性質註釋處理已啓用。

有沒有人有任何想法如何使這項工作在Eclipse中?

回答

0

原來,您還必須指定包含netbeans註釋的註釋處理程序的庫,這至少很乏味(eclipse中的註釋處理似乎與直覺無關)。

最好的辦法是在項目發生變化並且你很好的時候在項目上運行一個簡單的Maven構建。

+0

這不是一個真正的答案; NbBundle.Messages類位於org.openide.util jar中,但如果作爲註釋處理器鏈接,它似乎不起作用(至少對我來說不是)。一個真正的答案會顯示如何解決這個問題,而不是「哦,太難了,我會回答我更喜歡的問題」 – Stephen