又是一个愚蠢的问题。我相信这很容易,但这已经花了我很多时间而且我没有让它工作;(
我编写了一个工作原型来对服务器进行休息调用。为此,我使用“jersey-client-1.14.jar”。通过将其添加到 eclipse 项目类路径中效果很好。
现在我试图在 OSGi 包中做同样的事情。这些是我做的步骤:
- 我在我的 OSGi 捆绑项目中创建了一个 /lib 文件夹。
- 在该文件夹中添加了 jersey-client-1.14.jar。
- 在类路径中的 MANIFEST.MF 中添加了 jar:Bundle-ClassPath: ., lib/jersey-client-1.14.jar
- 检查它是否也正确添加到项目类路径中。
- 在 Eclipse 工作区中,我没有编译错误。
在运行时,使用 Client.create(); 创建球衣客户端时出现 classdef not found 异常的现象;
!ENTRY org.eclipse.equinox.event 4 0 2012-11-08 23:14:43.975 将事件 org.osgi.service.event.Event [topic=openhab/command/Hue_Bulb_2] 调度到处理程序 org.openhab.binding.hue.internal.HueBinding@70f5f42b 时出现 !MESSAGE 异常 !堆栈 0 java.lang.NoClassDefFoundError:无法初始化类 com.sun.jersey.spi.service.ServiceFinder 在 com.sun.jersey.api.client.Client.init(Client.java:213) 在 com.sun.jersey.api.client.Client.access$000(Client.java:118) 在 com.sun.jersey.api.client.Client$1.f(Client.java:191) 在 com.sun.jersey.api.client.Client$1.f(Client.java:187) 在 com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) 在 com.sun.jersey.api.client.Client.(Client.java:187) 在 com.sun.jersey.api.client.Client.(Client.java:159) 在 com.sun.jersey.api.client.Client.create(Client.java:669) 在 org.openhab.binding.hue.internal.bridge.HueBridge.getSettingsJson(HueBridge.java:64) 在 org.openhab.binding.hue.internal.bridge.HueBridge.pairBridgeIfNecessary(HueBridge.java:19) 在 org.openhab.binding.hue.internal.HueBinding.receiveCommand(HueBinding.java:37) 在 org.openhab.core.events.AbstractEventSubscriber.handleEvent(AbstractEventSubscriber.java:62) 在 org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197) 在 org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197) 在 org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1) 在 org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 在 org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) 在 org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135) 在 org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) 在 org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) 在 org.openhab.core.internal.events.EventPublisherImpl.sendCommand(EventPublisherImpl.java:76) 在 org.openhab.ui.webapp.internal.servlet.CmdServlet.service(CmdServlet.java:115) 在 org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61) 在 org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128) 在 org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:60) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:848) 在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:598) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:413) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 在 org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250) 在 org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) 在 org.eclipse.jetty.server.Server.handle(Server.java:350) 在 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454) 在 org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:890) 在 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:944) 在 org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630) 在 org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:230) 在 org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77) 在 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:606) 在 org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) 在 java.lang.Thread.run(Thread.java:680) 23:14:43.992 错误 OSGi[:98] - 将事件 org.osgi.service.event.Event [topic=openhab/command/Hue_Bulb_2] 调度到处理程序 org.openhab.binding.hue.internal.HueBinding@70f5f42b 时出现异常 java.lang.NoClassDefFoundError:无法初始化类 com.sun.jersey.spi.service.ServiceFinder 在 com.sun.jersey.api.client.Client.init(Client.java:213) 在 com.sun.jersey.api.client.Client.access$000(Client.java:118) 在 com.sun.jersey.api.client.Client$1.f(Client.java:191) 在 com.sun.jersey.api.client.Client$1.f(Client.java:187) 在 com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193) 在 com.sun.jersey.api.client.Client.(Client.java:187) 在 com.sun.jersey.api.client.Client.(Client.java:159) 在 com.sun.jersey.api.client.Client.create(Client.java:669) 在 org.openhab.binding.hue.internal.bridge.HueBridge.getSettingsJson(HueBridge.java:64) 在 org.openhab.binding.hue.internal.bridge.HueBridge.pairBridgeIfNecessary(HueBridge.java:19) 在 org.openhab.binding.hue.internal.HueBinding.receiveCommand(HueBinding.java:37)