2015-09-21 32 views
1

我是OSGi的新手。我正在使用eclipse PDE'開普勒服務版本2'。在OSGi中,在嘗試使用系統中的類導出包時獲取ClassNotFoundExceptions

我想讓javax.servlet包內的類可用於我的測試客戶端。但是,當爲了測試而試圖創建一個ServletException對象時,我得到了NoClassDefFoundError。

java.lang.NoClassDefFoundError: javax/servlet/ServletException.

我試過了這兩種方法。兩者都不能正常工作:

嘗試1:使用系統軟件包

我在日食OSGI框架,這些啓動參數:

-Dorg.osgi.framework.system.packages.extra=javax.servlet
-Dorg.osgi.framework.system.capabilities="osgi.ee; osgi.ee=\"JavaSE \";version:List=\"1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8\""

我可以在系統捆綁看到這個出口型套餐(0):javax.servlet; version="0.0.0"[exported] 我的包我有這個進口包裝:org.osgi.framework;version="[1.5,2)",javax.servlet

在啓動容器時,即使標記爲-Dorg.osgi.framework.bootdelegation=*,我也無法正常工作。

嘗試2:使用ExtensionBundle

我ExtensionBundle有罐子在classpath中的JavaEE-API-6.0.jar和出口javax.servlet包。 但我仍然在'java.lang.NoClassDefFoundError:javax/servlet/ServletException'。

我沒有任何啓動參數。

在擴展束的MANIFEST.MF中: ...

捆綁-CLASSPATH中,JavaEE的-API-6.0.jar
出口型套餐:...,的javax.servlet, ...
片段,主持人:system.bundle;擴展:=框架

...

我失去了什麼。

在此先感謝。

回答

1

JRE不包含軟件包javax.servlet。所以你不能簡單地導出它。您可以在maven central看看下面的包。它導出包。另外請記住,servlet API不足以運行一個servlet。您還需要實施osgi HTTPService。可能的實現是:felix http service,org.eclipse.equinox.http.jettypax-web。所以更好的解決方案可能是安裝其中一個。

javax.servlet:javax.servlet-api:3.1.0

相關問題