Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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 所需捆绑包的状态已解析,而不是活动状态_Java_Osgi_Equinox_Bnd - Fatal编程技术网

Java 所需捆绑包的状态已解析,而不是活动状态

Java 所需捆绑包的状态已解析,而不是活动状态,java,osgi,equinox,bnd,Java,Osgi,Equinox,Bnd,我有一个依赖于bundle B的bundle a。当bundle a中的代码运行并从bundle B访问一个类时,bundle B的状态被解析(4)而不是活动(32),bundle B的激活器也没有运行。我想B包的清单有问题,但我不能完全发现 这是用bnd生成的bundle B的清单 Manifest-Version: 1.0 Export-Package: org.jboss.logging;uses:="org.osgi.framework,org.eclips e.equinox.log

我有一个依赖于bundle B的bundle a。当bundle a中的代码运行并从bundle B访问一个类时,bundle B的状态被解析(4)而不是活动(32),bundle B的激活器也没有运行。我想B包的清单有问题,但我不能完全发现

这是用bnd生成的bundle B的清单

Manifest-Version: 1.0
Export-Package: org.jboss.logging;uses:="org.osgi.framework,org.eclips
 e.equinox.log,org.jboss.logmanager,org.apache.log4j,org.slf4j.spi,org
 .slf4j";version="3.2.0.Beta1-SNAPSHOT"
Build-Timestamp: Sun, 17 Mar 2013 15:07:31 +0100
Tool: Bnd-0.0.357
Bundle-Name: JBoss Logging 3
Created-By: 1.7.0_10 (Oracle Corporation)
Bundle-Vendor: JBoss by Red Hat
Scm-Revision: 9e799bac390dbbf9c7cd55afe93dff9265fbed05
Bundle-Version: 3.2.0.Beta1-SNAPSHOT
Bnd-LastModified: 1363529254048
Bundle-ManifestVersion: 2
Bundle-Activator: org.jboss.logging.Activator
Bundle-Description: The JBoss Logging Framework
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-SymbolicName: org.jboss.logging.jboss-logging
Import-Package: org.apache.log4j;resolution:=optional,org.eclipse.equi
 nox.log;resolution:=optional;version="1.0",org.jboss.logging;version=
 "3.2",org.jboss.logmanager;resolution:=optional,org.osgi.framework;ve
 rsion="1.7",org.slf4j;resolution:=optional;version="1.6",org.slf4j.sp
 i;resolution:=optional;version="1.6"
Bundle-DocURL: http://www.jboss.org
这是使用PDE生成的捆绑包A的清单

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Sample-view
Bundle-SymbolicName: sample-view; singleton:=true
Bundle-Version: 1.0.0.qualifier
Require-Bundle: org.eclipse.core.runtime,
 org.eclipse.ui,
 org.jboss.logging.jboss-logging
Bundle-RequiredExecutionEnvironment: JavaSE-1.7

唉。我打赌你在春分时跑步。在他们永恒的智慧中,Eclipse人员决定不启动捆绑包,因为他们担心这会使系统过载。在Eclipse中,尝试启动一个包确实过于复杂。然而,在您的案例中有一个简单的解决方案:OSGi激活策略。这将在加载第一个类时启动包。加上B

Bundle-ActivationPolicy: lazy

唉。我打赌你在春分时跑步。在他们永恒的智慧中,Eclipse人员决定不启动捆绑包,因为他们担心这会使系统过载。在Eclipse中,尝试启动一个包确实过于复杂。然而,在您的案例中有一个简单的解决方案:OSGi激活策略。这将在加载第一个类时启动包。加上B

Bundle-ActivationPolicy: lazy

是的,我正在运行Equinonx,这确实解决了问题。文档有点混乱,我得到的印象是它只会延迟运行activator。这并不是说如果不存在捆绑包,捆绑包就不会被激活。不要责怪OSGi,Equinox在这种情况下显然不是OSGi,因为一般来说所有捆绑包都应该启动。Philippe,我想我写了那个wiki页面。需要记住的是,OSGi本身从不启动捆绑包。您总是需要其他东西,例如启动器或管理代理。最佳实践是始终启动所有捆绑包,但是如果您没有
捆绑包激活策略
,Eclipse选择不这样做。换句话说,Eclipse已经将自己的附加语义分层到了这个清单头上。但它将启动标记为延迟激活的捆绑包,因为它假定它们的启动成本将摊销……很抱歉将此讨论拖离主题。如果Equinox更好地记录了当前的行为,那将是一个巨大的进步。我对此感到非常惊讶。在问这个问题之前,我在谷歌上搜索了一下,没有发现任何迹象表明这就是春分的运作方式。是的,我正在运行春分,这确实解决了这个问题。文档有点混乱,我得到的印象是它只会延迟运行activator。这并不是说如果不存在捆绑包,捆绑包就不会被激活。不要责怪OSGi,Equinox在这种情况下显然不是OSGi,因为一般来说所有捆绑包都应该启动。Philippe,我想我写了那个wiki页面。需要记住的是,OSGi本身从不启动捆绑包。您总是需要其他东西,例如启动器或管理代理。最佳实践是始终启动所有捆绑包,但是如果您没有
捆绑包激活策略
,Eclipse选择不这样做。换句话说,Eclipse已经将自己的附加语义分层到了这个清单头上。但它将启动标记为延迟激活的捆绑包,因为它假定它们的启动成本将摊销……很抱歉将此讨论拖离主题。如果Equinox更好地记录了当前的行为,那将是一个巨大的进步。我对此感到非常惊讶。在问这个问题之前,我在谷歌上搜索了一下,没有发现任何迹象表明这就是春分时的情况。