2016-05-15 61 views
2

我正在製作一個插件來提供Eclipse 4.x中的首選項頁面。Eclipse插件激活器的啓動方法未被調用

我遵循本教程Vogella-Preferences

與頁面的問題是,我輸入值一次,然後退出,然後重新打開首選項後,值不會保留。可能的原因可能是PreferenceStore未指定。

以下爲選項頁面代碼:

import com.varun.preference.main.Activator; 

public class EASEPreferences extends FieldEditorPreferencePage 
       implements IWorkbenchPreferencePage { 

    public EASEPreferences(){ 
     super(GRID); 
    } 

    @Override 
    public void init(IWorkbench workbench) { 

     setPreferenceStore(getPreferenceStore()); 
//  setPreferenceStore(Activator.getDefault().getPreferenceStore()); 
     setDescription("Final Implementation"); 
    } 

    @Override 
    protected void createFieldEditors() { 

     addField(new DirectoryFieldEditor("PATH", "Get &Default Keystore:", 
       getFieldEditorParent())); 

     addField(new BooleanFieldEditor("BOOLEAN_VALUE", 
      "&Automatically run scripts that are not signed(Not Recommended)", 
      getFieldEditorParent())); 
    } 
} 

眼下,代碼工作和偏好頁面是可見的,但它是沒有得到保存。

如果我去掉init方法和註釋的第二行第一,然後錯誤

顯示java.lang.NullPointerException在 com.varun.preference.page_final.EASEPreferences.init(EASEPreferences.java:24說)

Activator.java是如下

public class Activator extends AbstractUIPlugin { 

    public static Activator plugin; 
    public static BundleContext context; 

    public Activator() { 
    } 

    @Override 
    public void start(BundleContext context){ 

     Activator.context = context; 
     System.out.println("---InStart---"); 
     plugin = this; 
    } 

    @Override 
    public void stop(BundleContext context){ 

     Activator.context = null; 
    } 

    public static Activator getDefault(){ 

     return plugin; 
    } 

} 

在這裏,有什麼我假設是開始運行插件時未調用方法,因爲println語句未打印。

我是否缺少Activator的東西?

我的MANIFEST.MF文件是:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Final 
Bundle-SymbolicName: com.varun.preference.page.final;singleton:=true 
Bundle-Version: 1.0.0.qualifier 
Bundle-Vendor: VARUN 
Bundle-RequiredExecutionEnvironment: JavaSE-1.8 
Require-Bundle: org.eclipse.ui, 
org.eclipse.core.runtime 
Bundle-Activator: com.varun.preference.main.Activator 

我沒有使用任何產品或功能。這是一個簡單的插件。

Eclipse版本:4.5.2

感謝。

回答

8

你的問題是你沒有檢查:當其中一個類被加載MANIFEST.MF配置中激活此插件。檢查增加:

Bundle-ActivationPolicy: lazy 

到您的MANIFEST.MF和一切然後工作。

當你有Bundle-ActivationPolicy: lazy這意味着你不必明確地啓動你的包,這是一件好事。在Eclipse中,你希望儘可能地做到懶惰,開始捆綁就是一個很好的例子。

瞭解更多關於tracking lifecylesstarting them