2015-08-27 87 views
0

我想讓框架工廠在我的Maven項目中加載OSGi包。我試過以下內容:在OSGi中加載框架工廠

import org.osgi.framework.launch.FrameworkFactory; 
public class Activator implements BundleActivator { 
public void start(BundleContext context) throws Exception { 
    FrameworkFactory ff = ServiceLoader.load(FrameworkFactory.class).iterator().next(); 
} 
} 

我的包中有jar org.apache.felix.framework-4.4.1.jar。 MANIFEST.MF條目:

... 
Bundle-ClassPath: .,provider-0.0.1-SNAPSHOT.jar,org.apache.felix.framework-4.4.1.jar 
... 

,但我得到了以下錯誤:我曾經在費利克斯容器下面嘗試是錯誤:

java.util.NoSuchElementException 
    at java.util.ServiceLoader$LazyIterator.next(Unknown Source) 
    at java.util.ServiceLoader$1.next(Unknown Source) 
    at com.xxxxx.consumer.Activator.start(Activator.java:23) 
    at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:645) 
    at org.apache.felix.framework.Felix.activateBundle(Felix.java:2154) 
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2072) 
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1299) 
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304) 
    at java.lang.Thread.run(Unknown Source) 

請幫我解決這個問題。我想加載出現在我的Bundle-Classpath中的OSGi包。

+0

」存在於我的Bundle-ClassPath中的OSGi包「。我認爲你誤解了一些根本性的東西。你不會把束放在你自己的classpath上......如果你這樣做了,它們就不再捆綁了。 –

回答

2

FrameworkFactory可用於在簡單的舊Java應用程序中嵌入和啓動OSGi框架。

您正在嘗試在BundleActivator中使用它,它只會在OSGi框架的上下文中調用。

所以你會在另一個OSGi框架內啓動一個OSGi框架,這可能不是你想要的。 「

+0

感謝hwellmann和Neil Bartlett。我知道你在說什麼。 –