2011-06-29 28 views
3

我正在嘗試做一個簡單的演示,其中我啓動Equinox框架,然後加載創建的教程捆綁軟件(通過教程)。我不斷收到NullPointerExceptions這裏是堆棧跟蹤...nullPointerException嘗試以編程方式在Equinox中安裝捆綁軟件時

Exception in thread "main" java.lang.NullPointerException 
    at org.eclipse.osgi.internal.baseadaptor.BaseStorageHook.mapLocationToURLConnection(BaseStorageHook.java:372) 
    at org.eclipse.osgi.baseadaptor.BaseAdaptor.mapLocationToURLConnection(BaseAdaptor.java:185) 
    at org.eclipse.osgi.framework.internal.core.Framework$1.run(Framework.java:835) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.eclipse.osgi.framework.internal.core.Framework.installWorker(Framework.java:888) 
    at org.eclipse.osgi.framework.internal.core.Framework.installBundle(Framework.java:832) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.installBundle(BundleContextImpl.java:167) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.installBundle(BundleContextImpl.java:161) 
    at com.mydemo.bootstrap.Bootstrap.main(Bootstrap.java:35) 

這裏是代碼...

public class Bootstrap 
{ 

public static void main(String[ ] args) throws BundleException , InterruptedException , MalformedURLException 
{ 

    // Load the framwork factory 
    ServiceLoader loader = ServiceLoader.load(FrameworkFactory.class); 
    FrameworkFactory factory = (FrameworkFactory) loader.iterator().next(); 

    // Create a new instance of the framework 
    Framework framework = factory.newFramework(null); 

    try 
    { 
     // Start the framework 
     framework.start(); 
     framework.init(); 

     BundleContext bc = framework.getBundleContext(); 
     bc.installBundle("file:/c:/Users/kirk/Desktop/plugins/org.equinoxosgi.toast.client.emergency_1.0.0.201106290845.jar"); 
    } 
    finally 
    { 
     // Stop the framework 
     framework.stop(); 

     // Wait for the framework to stop completely 
     framework.waitForStop(3000); 
    } 
} 
} 

回答

0

我就遇到了這個問題爲好,我發現你沒有得到當使用apache felix而不是equinox作爲OSGi框架時出現這個錯誤。

這不是一個真正的解釋,但切換到felix可能是一種可能的解決方法。

0

我很確定start()和init()應該是相反的順序。

// Initialize the framework 
framework.init(); 

// Start the framework 
framework.start(); 
相關問題