java - 启动 bundle org.eclipse.jetty.osgi.boot 时出错(Eclipse 中的 OSGi 框架)

标签 java eclipse jetty osgi

我在 Eclipse 中运行 OSGi 项目。在将新方法添加到 REST channel (应该生成 JSON)之后,我得到了以下堆栈跟踪,表明捆绑 org.eclipse.jetty.osgi.boot 无法启动。

[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.eclipse.jetty.osgi.boot - BundleEvent STOPPING - org.eclipse.jetty.osgi.boot
[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.apache.aries.blueprint.container.BlueprintExtender - Starting BlueprintContainer destruction process for bundle org.eclipse.jetty.osgi.boot/9.4.0.v20161208
[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.apache.aries.blueprint.container.BlueprintExtender - Not a blueprint bundle or destruction of BlueprintContainer already finished for org.eclipse.jetty.osgi.boot/9.4.0.v20161208.
[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.apache.aries.blueprint.container.BlueprintExtender - Starting BlueprintContainer destruction process for bundle org.eclipse.jetty.osgi.boot/9.4.0.v20161208
[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.apache.aries.blueprint.container.BlueprintExtender - Not a blueprint bundle or destruction of BlueprintContainer already finished for org.eclipse.jetty.osgi.boot/9.4.0.v20161208.
[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.eclipse.jetty.osgi.boot - BundleEvent STOPPED - org.eclipse.jetty.osgi.boot
[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.eclipse.persistence.moxy - BundleEvent STARTING - org.eclipse.persistence.moxy
[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.apache.aries.blueprint.container.BlueprintExtender - Scanning bundle org.eclipse.persistence.moxy/2.6.4.v20160829-44060b6 for blueprint application
[Framework Event Dispatcher: org.eclipse.osgi.internal.framework.EquinoxEventPublisher@7946e1f4] ERROR org.eclipse.jetty.osgi.boot - FrameworkEvent ERROR - org.eclipse.jetty.osgi.boot
org.osgi.framework.BundleException: Exception in org.eclipse.jetty.osgi.boot.JettyBootstrapActivator.start() of bundle org.eclipse.jetty.osgi.boot.
    at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:795)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:724)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:932)
    at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:309)
    at org.eclipse.osgi.container.Module.doStart(Module.java:581)
    at org.eclipse.osgi.container.Module.start(Module.java:449)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1620)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1600)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1571)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1514)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
Caused by: java.lang.NullPointerException
    at org.eclipse.jetty.osgi.boot.internal.serverfactory.DefaultJettyAtJettyHomeHelper.startJettyAtJettyHome(DefaultJettyAtJettyHomeHelper.java:134)
    at org.eclipse.jetty.osgi.boot.JettyBootstrapActivator.start(JettyBootstrapActivator.java:82)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:774)
    at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:767)
    ... 12 more
[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.apache.aries.blueprint.container.BlueprintExtender - No blueprint application found in bundle org.eclipse.persistence.moxy/2.6.4.v20160829-44060b6
[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.eclipse.persistence.moxy - BundleEvent STARTED - org.eclipse.persistence.moxy
[Start Level: Equinox Container: 2f378d23-3439-4e9f-98a1-7d4720e478a8] DEBUG org.apache.felix.coordinator - BundleEvent STARTING - org.apache.felix.coordinator

GrepCode 引导我使用以下代码:
        for (Bundle b : bundleContext.getBundles())
        {
            if (b.getState() == Bundle.UNINSTALLED)
                continue;

            if (b.getSymbolicName().equals(jettyHomeBundleSysProp))
            {
                jettyHomeBundle = b;
                break;
            }
        }

它看起来像 b变量将为空。但是,我不知道这会给我带来什么。

方法注释是很无辜的:
@POST()
@Path("update")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)

但是,我没有看到它们与错误之间的联系,因为在添加方法后,我在 MoXy 中得到了 ClassNotFoundException :
Caused by: java.lang.NoClassDefFoundError: javax/json/JsonException
    at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.getNewXMLReader(SAXUnmarshaller.java:209)
    at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.getXMLReader(SAXUnmarshaller.java:197)
    at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:452)
    at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:400)
    at org.eclipse.persistence.internal.oxm.record.SAXUnmarshaller.unmarshal(SAXUnmarshaller.java:741)
    at org.eclipse.persistence.internal.oxm.XMLUnmarshaller.unmarshal(XMLUnmarshaller.java:649)
    at org.eclipse.persistence.jaxb.JAXBUnmarshaller.unmarshal(JAXBUnmarshaller.java:349)
    at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.readFrom(MOXyJsonProvider.java:668)

然后我添加了org.glassfish.javax.json:1.0.4运行配置,我遇到了 jetty 初始化程序的问题。现在错误仍然存​​在,即使在删除了导致初始问题的 json 包和带有 REST channel 的包之后也是如此。

什么可能导致错误,我该怎么办?

最佳答案

我看起来像 Eclipse 错误。

我得去目录$workspace/.metadata/.plugins/org.eclipse.pde.core并删除我的启动配置目录(在我的例子中, OSGI-Launch )。

看来我不必要地打扰了小组。我应该采用经典的 Eclipse 方式:如果某些东西停止工作,请创建一个新工作区。或者删除特定插件的缓存。但是,我希望这篇文章将来仍然对某人有用。

关于java - 启动 bundle org.eclipse.jetty.osgi.boot 时出错(Eclipse 中的 OSGi 框架),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42086107/

相关文章:

eclipse - Jersey 2 - 例如书店的最小 pom.xml,得到 404

java - 在 JavaGit、JGit 和 EGit 之间选择的困惑

java - AsyncProxyServlet 中的 Jetty HttpClient 不支持 SSL?

java - AES 将任何 java 对象加密为 Base64 字符串

java - 序列化器 - Kryo 的速度、API/功能(如 FlexJson)

java - URI 语法和字符串转换有困难

java - Selenium WebDriver 中十六进制格式的 getCssValue(颜色)

eclipse - Require-Bundle和Import-Package与feature.xml的需求

spring - 在 Tomcat 中发送带有附件文件的消息时缺少起始边界异常

java - 将 Jetty 设置为服务