Hi,

I think you need to export the package of your class.

Your manifest should include something like:

Export-Package: org.damiox.test.bundle2

regards,

Michiel


 
-----------------
http://www.codessentials.com - Your essential software, for free!
Follow us at http://twitter.com/#!/Codessentials


________________________________
 From: Damian Nardelli <[email protected]>
To: [email protected] 
Sent: Friday, November 30, 2012 4:37 AM
Subject: Getting a ClassNotFoundException when starting my bundle
 

Hello guys,

I'm getting a ClassNotFoundException when trying to start an OSGI blueprint 
bundle called "Bundle2" in JBOSS AS7 (jboss-as-7.2.0.Alpha1-SNAPSHOT):

00:21:27,444 DEBUG 
[org.apache.aries.blueprint.container.BlueprintContainerImpl] (Blueprint 
Extender: 2) Running blueprint container for bundle Bundle2 in state Unknown
00:21:27,444 INFO  [org.jboss.osgi.framework] (MSC service thread 1-4) 
JBOSGI011002: Bundle started: Bundle2:1.0.0.201211300021
00:21:27,446 DEBUG 
[org.apache.aries.blueprint.container.BlueprintEventDispatcher] (Blueprint 
Extender: 2) Sending blueprint container event BlueprintEvent[type=CREATING] 
for bundle Bundle2
00:21:27,479 DEBUG 
[org.apache.aries.blueprint.container.BlueprintContainerImpl] (Blueprint 
Extender: 2) Tracking service references: []
00:21:27,480 DEBUG 
[org.apache.aries.blueprint.container.BlueprintContainerImpl] (Blueprint 
Extender: 2) Instantiating components: [blueprintContainer, blueprintBundle, 
blueprintBundleContext, blueprintConverter, helloWorld]
00:21:27,480 DEBUG [org.apache.aries.blueprint.di.AbstractRecipe] (Blueprint 
Extender: 2) Unable to load class org.damiox.test.bundle2.HelloWorld from 
recipe BeanRecipe[name='helloWorld'], trying to load a nested class 
org.damiox.test.bundle2$HelloWorld
00:21:27,481 ERROR [org.apache.aries.blueprint.di.AbstractRecipe] (Blueprint 
Extender: 2) Unable to load class org.damiox.test.bundle2.HelloWorld from 
recipe BeanRecipe[name='helloWorld']
00:21:27,481 WARN  [org.apache.aries.blueprint.container.BeanRecipe] (Blueprint 
Extender: 2) Object to be destroyed is not an instance of 
UnwrapperedBeanHolder, type: null
00:21:27,482 ERROR 
[org.apache.aries.blueprint.container.BlueprintContainerImpl] (Blueprint 
Extender: 2) Unable to start blueprint container for bundle Bundle2: 
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to 
load class org.damiox.test.bundle2.HelloWorld from recipe 
BeanRecipe[name='helloWorld']
at 
org.apache.aries.blueprint.di.AbstractRecipe.doLoadType(AbstractRecipe.java:195)
at 
org.apache.aries.blueprint.di.AbstractRecipe.loadType(AbstractRecipe.java:161)
at 
org.apache.aries.blueprint.container.BeanRecipe.loadClass(BeanRecipe.java:245)
at org.apache.aries.blueprint.container.BeanRecipe.getType(BeanRecipe.java:891)
at 
org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:319)
at 
org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:802)
at 
org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:783)
at org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
[rt.jar:1.6.0_35]
at java.util.concurrent.FutureTask.run(FutureTask.java:138) [rt.jar:1.6.0_35]
at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
at 
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)
at 
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)
at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:648)
at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:340)
at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:242)
at 
org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
[rt.jar:1.6.0_35]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
[rt.jar:1.6.0_35]
at java.util.concurrent.FutureTask.run(FutureTask.java:138) [rt.jar:1.6.0_35]
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
 [rt.jar:1.6.0_35]
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
 [rt.jar:1.6.0_35]
at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 [rt.jar:1.6.0_35]
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
[rt.jar:1.6.0_35]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_35]
Caused by: java.lang.ClassNotFoundException: org.damiox.test.bundle2.HelloWorld 
from [Module "deployment.Bundle2.jar:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) 
[jboss-modules.jar:1.1.3.GA]
at 
org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
 [jboss-modules.jar:1.1.3.GA]
at 
org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
 [jboss-modules.jar:1.1.3.GA]
at 
org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
 [jboss-modules.jar:1.1.3.GA]
at 
org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:132)
 [jboss-modules.jar:1.1.3.GA]
at 
org.jboss.osgi.framework.internal.HostBundleRevision.loadClass(HostBundleRevision.java:121)
 [jbosgi-framework-core-2.0.1.Final.jar:2.0.1.Final]
at 
org.jboss.osgi.framework.internal.AbstractBundleState.loadClass(AbstractBundleState.java:444)
 [jbosgi-framework-core-2.0.1.Final.jar:2.0.1.Final]
at 
org.jboss.osgi.framework.internal.HostBundleState.loadClass(HostBundleState.java:102)
 [jbosgi-framework-core-2.0.1.Final.jar:2.0.1.Final]
at 
org.apache.aries.blueprint.container.BlueprintContainerImpl.loadClass(BlueprintContainerImpl.java:388)
at 
org.apache.aries.blueprint.container.BlueprintRepository.loadClass(BlueprintRepository.java:410)
at org.apache.aries.blueprint.container.GenericType.parse(GenericType.java:113)
at 
org.apache.aries.blueprint.di.AbstractRecipe.doLoadType(AbstractRecipe.java:168)
... 24 more


"Bundle2" is a very simple bundle that I developed just to analyze how OSGI 
blueprint works. This bundle contains only 1 class: 
org.damiox.test.bundle2.HelloWorld.
The blueprint xml file (OSGI-INF/blueprint/config.xml) is detailed below:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";>
<bean id="helloWorld" class="org.damiox.test.bundle2.HelloW2orld"
init-method="niam">
</bean>
</blueprint>

And the MANIFEST.MF is the following:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Bundle2
Bundle-SymbolicName: Bundle2
Bundle-Version: 1.0.0.qualifier
Import-Package: org.osgi.framework
Bundle-ClassPath: .
Bundle-RequiredExecutionEnvironment: J2SE-1.5

I'm running the JBoss Server through Eclipse Juno and starting my bundle from 
there. 
Why is it failing? This is driving me nuts :)

Regards
Damian

Reply via email to