nullPointerException при попытке программно установить пакет в Equinox - PullRequest
4 голосов
/ 29 июня 2011

Я пытаюсь сделать простую демонстрацию, где я запускаю Equinox Framework, а затем загружаю созданный учебный пакет (через учебное пособие).Я продолжаю получать NullPointerExceptions вот трассировка стека ...

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 );
    }
}
}

Ответы [ 2 ]

0 голосов
/ 12 июля 2012

Я почти уверен, что start () и init () должны быть в противоположном порядке.

// Initialize the framework
framework.init( );

// Start the framework
framework.start( );
0 голосов
/ 20 сентября 2011

Я также столкнулся с этой проблемой и обнаружил, что вы не получите эту ошибку при использовании apache felix вместо равноденствия в качестве платформы OSGi.

Это не совсем объяснение, но возможен обходной путь перехода на Феликс.

...