State of required bundle resolved instead of active - java

I have a bundle A that depends on bundle B. When code in bundle A runs and accesses a class from bundle B then the state of bundle B is resolved (4) instead of active (32) and the activator of bundle B didn't run as well. I assume there's something wrong the manifest of bundle B but I can't quite spot it.
This is the manifest of bundle B, generated with bnd.
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
This the manifest of bundle A generated with PDE.
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

Sigh. I bet you run on Equinox. In their eternal wisdom the Eclipse guys decided not to start bundles, being afraid it would overload the system. Trying to get a bundle started is REALLY overly complex in Eclipse. However, in your case there is a simple solution: OSGi Activation Policy. This will start your bundle when the first class is loaded. Just add to B
Bundle-ActivationPolicy: lazy

Related

Bundle 'org.eclipse.wb.core.java' , org.eclipse.jdt.core and org.eclipse.jdt.internal.core cannot be resolved in eclipse plugin

I'm redoing a legacy code from a plugin for eclipse ide, but I'm having problems with the following imported libraries:
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.internal.core.PackageFragment;
The error message reported in the Ide and the following:
The import org.eclipse.jdt.core cannot be resolved
The import org.eclipse.jdt.internal.core cannot be resolved
I also have a problem with the following import in the MANIFEST.MF file.
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.wb.core.java;bundle-version="1.5.2"
The error message reported in the Ide and the following:
Bundle 'org.eclipse.wb.core.java' cannot be resolved
I wonder if I need to install some dependency or if the path changed.
Edit 1 The complete MANIFEST.MF.
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: ModuloAnalysis
Bundle-SymbolicName: ModuloAnalysis; singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: moduloanalysis.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.jdt.core,
org.eclipse.wb.core.java;bundle-version="1.5.2"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ClassPath: lib/smellplatform.jar,
.,
lib/weka.jar
Import-Package: org.eclipse.core.resources,
org.eclipse.debug.core,
org.eclipse.debug.core.model,
org.eclipse.jdt.debug.core,
org.eclipse.jdt.internal.debug.ui.actions
The org.eclipse.jdt.core.xxx imports require you to add the org.eclipse.jdt.core plugin to the Require-Bundle list in the MANIFEST.MF
org.eclipse.jdt.internal.core.PackageFragment is also in org.eclipse.jdt.core however this is an internal class so the code is breaking the rules by using it.
I think org.eclipse.wb is WindowBuilder - do you have that in your target platform?

Dependency not installed when installing Eclipse

I am developing an Eclipse plugin. That is using UI and file resources. Which required org.eclipse.core.resources;bundle-version="3.8.101" and filed if this dependency is not available on target eclipse.
Eclipse version: Juno (for Android development).
I want to install this jar if not available on target Eclipse. So my plugin run without any issue for target Eclipse.
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: ABC
Bundle-SymbolicName: ABC;singleton:=true
Bundle-Version: 1.0
Bundle-Activator: magic.Activator
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.resources;bundle-version="3.8.101"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .,
libs/java-json.jar,
libs/json-lib-2.4-jdk15.jar
Here is the error I got while installation
Cannot complete the install because one or more required items could not be found.
Software being installed: Feature 1.0.0 (com.confiz.android.codegen.feature.feature.group 1.0.0)
Missing requirement: Feature 1.0.0 (com.confiz.android.codegen.feature.feature.group 1.0.0) requires 'org.eclipse.core.resources 3.8.101' but it could not be found

How to add plugin to run configuration?

I try to build a java project with eclipse.
During the complilation I have error java.lang.RuntimeException: No application id has been found. So I read that I need to add required plugins. I went to Run Configuration -> Plug-ins tab, push button Add Required Plug-ins and then validate plug-ins. I have my own plugin in the project. So I get com.blablabla is missing. How can I add my plugin to plugins list?
UPD: MANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: com.blabla.cc; singleton:=true
Bundle-Version: 0.0.0.REL
Bundle-Activator: com.blabla.ui.cc.Activator
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.core.expressions;bundle-version="3.4.1",
com.blabla.core,
com.blabla..shared,
com.blabla.ui.core,
com.blabla.ui,
org.eclipse.jface.text,
org.eclipse.ui.editors,
org.eclipse.ui.workbench.texteditor,
org.eclipse.core.filesystem,
org.eclipse.ui.ide,
org.eclipse.ui.views,
org.apache.axis,
org.eclipse.wst.xml.core
Eclipse-LazyStart: true
Bundle-ClassPath: lib/SCESchemaCodeCcWorkbench.jar,
lib/DebugUtils.jar,
bin,
icons,
myApplicationUI.jar,
lib/batik-awt-util.jar,
lib/batik-bridge.jar,
lib/batik-css.jar,
lib/batik-dom.jar,
lib/batik-ext.jar,
lib/batik-gvt.jar,
lib/batik-parser.jar,
lib/batik-script.jar,
lib/batik-svg-dom.jar,
lib/batik-swing.jar,
lib/batik-util.jar,
lib/batik-xml.jar,
lib/xml-apis-dom3.jar,
lib/batik-transcoder.jar,
lib/batik-anim.jar,
lib/batik-codec.jar,
lib/batik-extension.jar,
lib/batik-gui-util.jar,
lib/batik-svggen.jar,
lib/xml-apis-ext.jar
Export-Package: com.blabla.sce.schema.code.ccworkbench,
com.blabla.sce.schema.code.ccworkbench.types
Implementation-Version: 0.0.0.REL
Bundle-Localization: plugin

Error while osgi-fying existing webservice war

I am deploying my existing webservice war(its working on tomcat) on jboss fuse. I changed my manifest.mf like below
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: HelloCxfWS
Bundle-SymbolicName: HelloCxfWS
Bundle-Version: 1.0.0.qualifier
Bundle-ClassPath: WEB-INF/classes/
Required-Bundle: org.apache.cxf.cxf-bundle
Import-Package: javax.jws,javax.wsdl,javax.xml.bind,javax.xml.bind.annotation,javax.xml.namespace,
javax.xml.ws,META-INF.cxf,META-INF.cxf.osgi,
org.apache.cxf.bus, org.apache.cxf.bus.spring,org.apache.cxf.bus.resource,
org.apache.cxf.configuration.spring,org.apache.cxf.resource,org.apache.cxf.jaxws,
org.apache.servicemix.cxf.transport.http_cxf,org.springframework.beans.factory.config,
org.apache.servicemix.cxf.transport.http_osgi
Private-Package: com.irk.test.ws.*
DynamicImport-Package: *
But i am getting following error in logs
13:24:00,757 | WARN | edhat-024/deploy | fileinstall | 7 - org.apache.felix.fileinstall - 3.3.11.redhat-60024 | Error while starting bundle: file:/E:/jboss-fuse-6.0.0.redhat-024/deploy/HelloCxfWS.war
org.osgi.framework.BundleException: Unresolved constraint in bundle HelloCxfWS [292]: Unable to resolve 292.0: missing requirement [292.0] osgi.wiring.package; (osgi.wiring.package=org.apache.servicemix.cxf.transport.http_cxf)
at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4155)[org.apache.felix.framework-4.0.3.redhat-60024.jar:]
at org.apache.felix.framework.Felix.startBundle(Felix.java:2055)[org.apache.felix.framework-4.0.3.redhat-60024.jar:]
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:955)[org.apache.felix.framework-4.0.3.redhat-60024.jar:]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1247)[7:org.apache.felix.fileinstall:3.3.11.redhat-60024]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1219)[7:org.apache.felix.fileinstall:3.3.11.redhat-60024]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1208)[7:org.apache.felix.fileinstall:3.3.11.redhat-60024]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:503)[7:org.apache.felix.fileinstall:3.3.11.redhat-60024]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:291)[7:org.apache.felix.fileinstall:3.3.11.redhat-60024]
Please help in this regard
Regards,
It should be
Require-Bundle:
instead of
Required-Bundle:
Is the bundle org.apache.cxf.cxf-bundle available?

Apache Felix misses javax.sql.Datasource

i just migrated from Equinox to Apache Felix. Now there is the javax.sql.datasource class missing:
java.lang.NoClassDefFoundError: javax/sql/DataSource
My bundle is importing javax.sql in the manifest file and i tried to add the following line to the felix config:
org.osgi.framework.system.packages.extra=javax.sql
Is there any way to teach felix to export the bundle or is there a bundle that does it? It worked fine in Equinox even without the import statement in the manifest.
EDIT:
The manifest file:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Database
Bundle-SymbolicName: ...database
Bundle-Version: 1.0.0
Import-Package: javax.sql,
org.osgi.framework;version="1.3.0",
org.osgi.service.component;version="1.1.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ClassPath: lib/mysql-connector-java-5.1.20-bin.jar,
.
Export-Package: ...database.model,
...database.service
Service-Component: OSGI-INF/component.xml
Thanks,
Daniel
Felix does already export this package.
More likely is that there may be something wrong with your Import-Package statement. You did state that your bundle imports the package, but please post a copy of your MANIFEST.MF to be sure.

Categories