Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 焊接OSGI示例-无结果_Java_Osgi_Cdi_Apache Felix_Weld - Fatal编程技术网

Java 焊接OSGI示例-无结果

Java 焊接OSGI示例-无结果,java,osgi,cdi,apache-felix,weld,Java,Osgi,Cdi,Apache Felix,Weld,我想做以下解决方案:ApacheFelix+Weld for JavaSE(我使用Felix4.6.1和Weld 2.2.10.SP1)。为此,我想运行weld archive中的一个示例—weld osgi paint 我仅安装以下捆绑包: xbean-bundleutils-3.18.jar pax-cdi-api-0.8.0.jar pax-cdi-extension-0.8.0.jar pax-cdi-spi-0.8.0.jar pax-cdi-extender-0.8.0.jar pa

我想做以下解决方案:ApacheFelix+Weld for JavaSE(我使用Felix4.6.1和Weld 2.2.10.SP1)。为此,我想运行weld archive中的一个示例—weld osgi paint

我仅安装以下捆绑包:

xbean-bundleutils-3.18.jar
pax-cdi-api-0.8.0.jar
pax-cdi-extension-0.8.0.jar
pax-cdi-spi-0.8.0.jar
pax-cdi-extender-0.8.0.jar
pax-swissbox-core-1.8.0.jar
pax-swissbox-lifecycle-1.8.0.jar
pax-swissbox-tracker-1.8.0.jar
ops4j-base-lang-1.5.0.jar
slf4j-api-1.7.6.jar
slf4j-log4j12-1.7.2.jar
log4j-1.2.17.jar
weld-osgi-paint-api.jar
weld-osgi-paint-core.jar
weld-osgi-paint-triangle.jar
weld-osgi-paint-square.jar
我只启动了两个包:

org.apache.felix.scr-1.8.2.jar
weld-osgi-paint-core.jar
除了
weld se.jar
weld se core.jar
之外,我添加到lib path中,并通过以下方式导出“javax.*”包:

String SYSTEM_PACKAGES =
        "org.osgi.framework;version=\"1.8\"," +
        "org.osgi.util.tracker;version=\"1.8\","+
        "org.osgi.service.packageadmin;version=\"1.8\","+
        "org.osgi.framework.wiring;version=\"1.8\","+
        "javax.swing,javax.management,javax.naming,javax.xml.parsers,"+
        "javax.el,javax.enterprise.context;version=\"1.0\","+
        "javax.enterprise.event;version=\"1.0\","+
        "javax.enterprise.inject;version=\"1.0\","+
        "javax.enterprise.util;version=\"1.0\","+
        "javax.inject;version=\"1.0\","+
        "javax.annotation;version=\"1.1\","+
        "javax.enterprise.context.spi;version=\"1.0\","+
        "javax.enterprise.inject.spi;version=\"1.0\","+
        "org.w3c.dom,org.xml.sax,org.xml.sax.helpers";
       configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES, SYSTEM_PACKAGES);
我启动程序,没有任何错误和异常。我什么也得不到。我做错了什么

编辑1
我删除了slf4j捆绑包,而是安装了pax-logging-api-1.8.2.jar。这就是我现在得到的:

org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling SLF4J API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Jakarta Commons Logging API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Log4J API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling Avalon Logger API support.
org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.logging.internal.Activator] : Enabling JULI Logger API support.

就这些。没有别的了。程序不会终止。它只显示其他内容。

您需要启动pax cdi扩展器。它处理这个例子。顺便说一句,我会启动除碎片之外的所有捆绑包。如果他们有一些积极的行为,如果他们只是lib,那么启动他们是有意义的。我不确定“将焊接se*添加到lib路径”是什么意思

Pax CDI需要焊接osgi束及其依赖项。Weld SE用于Java SE,不用于OSGi


查看工作示例。

我启动了除slf4j-log4j12-1.7.2.jar之外的所有捆绑包。结果是一样的。不确定slf4j的东西是否正确。我宁愿安装pax日志。普通slf4j在OSGi中不起作用。有了pax日志,你可能会在日志中看到一些东西。pax cdi没有处理您的捆绑包,或者它遇到错误。您需要安装pax日志记录。不是pax日志api。