又一個愚蠢的問題。我相信這很容易,但是這已經花了我很多時間,我不明白它的工作原理;(無法添加jar到OSGi包
我有一個書面的工作原型,用於對服務器進行其他調用。我使用的是「jersey-client-1.14.jar」。將它添加到eclipse項目類路徑中效果相當不錯。
現在我試圖在OSGi包中做同樣的事情。
- 我在OSGi包項目創造了/ lib文件夾。
- 添加了球衣,客戶1.14.jar該文件夾中。
- 在類路徑的MANIFEST.MF中添加jar:Bundle-ClassPath:。,lib/jersey-client-1.14.jar
- 檢查它是否也正確添加到項目類路徑中。
- 在Eclipse工作區中我沒有編譯錯誤。
在運行時,我遇到了使用Client.create()創建球衣客戶端時發現classdef沒有發現異常的現象;
!ENTRY org.eclipse.equinox.event 4 0 2012-11-08 23:14:43.975 !MESSAGE Exception while dispatching event org.osgi.service.event.Event [topic=openhab/command/Hue_Bulb_2] to handler [email protected] !STACK 0 java.lang.NoClassDefFoundError: Could not initialize class com.sun.jersey.spi.service.ServiceFinder at com.sun.jersey.api.client.Client.init(Client.java:213) at com.sun.jersey.api.client.Client.access$000(Client.java:118) at com.sun.jersey.api.client.Client$1.f(Client.java:191) at com.sun.jersey.api.client.Client$1.f(Client.java:187) at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) at com.sun.jersey.api.client.Client.(Client.java:187) at com.sun.jersey.api.client.Client.(Client.java:159) at com.sun.jersey.api.client.Client.create(Client.java:669) at org.openhab.binding.hue.internal.bridge.HueBridge.getSettingsJson(HueBridge.java:64) at org.openhab.binding.hue.internal.bridge.HueBridge.pairBridgeIfNecessary(HueBridge.java:19) at org.openhab.binding.hue.internal.HueBinding.receiveCommand(HueBinding.java:37) at org.openhab.core.events.AbstractEventSubscriber.handleEvent(AbstractEventSubscriber.java:62) at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197) at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197) at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135) at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) at org.openhab.core.internal.events.EventPublisherImpl.sendCommand(EventPublisherImpl.java:76) at org.openhab.ui.webapp.internal.servlet.CmdServlet.service(CmdServlet.java:115) at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:598) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) at org.eclipse.jetty.server.Server.handle(Server.java:350) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:606) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) at java.lang.Thread.run(Thread.java:680) 23:14:43.992 ERROR OSGi[:98] - Exception while dispatching event org.osgi.service.event.Event [topic=openhab/command/Hue_Bulb_2] to handler [email protected] java.lang.NoClassDefFoundError: Could not initialize class com.sun.jersey.spi.service.ServiceFinder at com.sun.jersey.api.client.Client.init(Client.java:213) at com.sun.jersey.api.client.Client.access$000(Client.java:118) at com.sun.jersey.api.client.Client$1.f(Client.java:191) at com.sun.jersey.api.client.Client$1.f(Client.java:187) at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) at com.sun.jersey.api.client.Client.(Client.java:187) at com.sun.jersey.api.client.Client.(Client.java:159) at com.sun.jersey.api.client.Client.create(Client.java:669) at org.openhab.binding.hue.internal.bridge.HueBridge.getSettingsJson(HueBridge.java:64) at org.openhab.binding.hue.internal.bridge.HueBridge.pairBridgeIfNecessary(HueBridge.java:19) at org.openhab.binding.hue.internal.HueBinding.receiveCommand(HueBinding.java:37)
你能告訴我們你的清單文件嗎?我建議您使用Maven-Bundle-Plugin來幫助您構建清單文件,而不是手動編輯它。 – wulfgarpro