java.lang.ClassCastException:无法将org.glassfish.web.loader.WebappClassLoader强制转换为org.osgi.framework.BundleReference

java.lang.ClassCastException:无法将org.glassfish.web.loader.WebappClassLoader强制转换为org.osgi.framework.BundleReference,java,netbeans,glassfish,osgi,Java,Netbeans,Glassfish,Osgi,我正在使用Glassfish和OSGI开发一个简单的应用程序。我发现这个教程: 我修改了这个例子。您可以找到我的自定义示例文件: 我用web模块和EJB模块创建了EAR包。我创建了一个会话bean,它调用OSGI包。我成功地编译了这个项目。问题是,当我将软件包上载到Glassfish应用程序服务器并尝试将简单小程序打开到web模块时,出现以下错误消息: HTTP Status 500 - type Exception report message descriptionThe server

我正在使用Glassfish和OSGI开发一个简单的应用程序。我发现这个教程: 我修改了这个例子。您可以找到我的自定义示例文件: 我用web模块和EJB模块创建了EAR包。我创建了一个会话bean,它调用OSGI包。我成功地编译了这个项目。问题是,当我将软件包上载到Glassfish应用程序服务器并尝试将简单小程序打开到web模块时,出现以下错误消息:

HTTP Status 500 -

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.ClassCastException: Cannot cast org.glassfish.web.loader.WebappClassLoader to org.osgi.framework.BundleReference

note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.1 logs.
GlassFish Server Open Source Edition 3.1.1

也许问题在于缺少依赖性。我找不到问题?您知道问题出在哪里吗?

OSGi Core 4.2规范(org.OSGi.framework;version=1.5)第3.8.9节要求所有bundle类加载程序必须实现bundle引用接口。也许GlassFish中的类装入器不这样做?您的GlassFish版本支持哪一版本的OSGi核心规范?

OSGi核心4.2规范(org.OSGi.framework;version=1.5)第3.8.9节要求所有捆绑包类加载程序必须实现BundleReference接口。也许GlassFish中的类装入器不这样做?您的GlassFish版本支持什么版本的OSGi核心规范?

如果我理解正确,那么OSGi版本就是问题所在。在web模块中,我声明了以下内容:

        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>osgi-cdi-api</artifactId>
            <version>3.1-SNAPSHOT</version>
            <type>jar</type>
        </dependency> 

如果我理解正确,OSGI的版本就是问题所在。在web模块中,我声明了以下内容:

        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>osgi-cdi-api</artifactId>
            <version>3.1-SNAPSHOT</version>
            <type>jar</type>
        </dependency> 

您不应将应用程序部署为ear,两个模块必须作为OSGi捆绑包单独部署

您不应将应用程序部署为ear,这两个模块必须作为OSGi捆绑包单独部署

发布Glassfish日志中的完整stacktrace。这是错误堆栈发布Glassfish日志中的完整stacktrace。这是错误堆栈有人可以帮助我吗?我和这个问题斗争了两个多星期。请帮帮我。有人能帮我吗?我和这个问题斗争了两个多星期。请帮助我。问题是我正在开发一个使用JNI的应用程序。据我所知,只有EAR包可以包含资源适配器,以使java->C桥接。有可能开发可以调用JNI的WAR归档吗?您的资源适配器也可以作为一个模块部署,很可能是非osgi模块。事实证明,EAR包在设计上无法从osgi包调用方法。这里,如果有人愿意,他可以投票赞成:问题是我正在开发一个使用JNI的应用程序。据我所知,只有EAR包可以包含资源适配器,以使java->C桥接。有可能开发可以调用JNI的WAR归档吗?您的资源适配器也可以作为一个模块部署,很可能是非osgi模块。事实证明,EAR包在设计上无法从osgi包调用方法。如果有人愿意,他可以投这个票: