You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by ramesh chandra <ta...@gmail.com> on 2012/06/23 02:12:53 UTC
explicitly make one bundle aware of other ?
I have wrapped an external library ( Cassandra - Hector Client ) as a
bundle , but I am constantly getting a ClassNotFoundException. So , I
tried passing the missing (Thrift Library) after wrapping as a bundle,
but it does not help either.
Is there any other way I can explicitly make one bundle aware of other ?
Just in case if anyone has see it , this is the error
Caused by: java.lang.ClassNotFoundException:
org.apache.thrift.transport.TTransportException not found by
me.prettyprint.hector [169]
at
org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787)
at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)
at
org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)[:1.6.0_26]
... 41 more
appreciate any help
kind regards,
Ramesh
Re: explicitly make one bundle aware of other ?
Posted by ramesh chandra <ta...@gmail.com>.
On 06/22/2012 10:17 PM, Chris Geer wrote:
>
> On Fri, Jun 22, 2012 at 7:46 PM, ramesh chandra <tableters@gmail.com
> <ma...@gmail.com>> wrote:
>
> On 06/22/2012 09:08 PM, Chris Geer wrote:
>> On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra
>> <tableters@gmail.com <ma...@gmail.com>> wrote:
>>
>> I have wrapped an external library ( Cassandra - Hector
>> Client ) as a bundle , but I am constantly getting a
>> ClassNotFoundException. So , I tried passing the missing
>> (Thrift Library) after wrapping as a bundle, but it does not
>> help either.
>>
>> How did you go about making it a bundle?
>>
>> Is there any other way I can explicitly make one bundle aware
>> of other ?
>>
>>
>> You need to make sure two things happen. Your Cassandra bundle
>> exports the correct packages and your other bundle imports the
>> correct packages.
>>
>>
>> Just in case if anyone has see it , this is the error
>>
>> Caused by: java.lang. ClassNotFoundException:
>> org.apache.thrift.transport. TTransportException not found by
>> me.prettyprint.hector [169]
>>
>> at org.apache.felix.framework. ModuleImpl.
>> findClassOrResourceByDelegatio n(ModuleImpl.java:787)
>> at org.apache.felix.framework. ModuleImpl.access$400(
>> ModuleImpl.java:71)
>> at org.apache.felix.framework.
>> ModuleImpl$ModuleClassLoader. loadClass(ModuleImpl.java: 1768)
>> at java.lang.ClassLoader. loadClass(ClassLoader.java:
>> 247)[:1.6.0_26]
>>
>> ... 41 more
>>
>> appreciate any help
>>
>> kind regards,
>> Ramesh
>>
>>
> Hi Chris,
>
> Thanks for the input. Karaf has a beautiful wrapper for external
> library
> osgi:install wrap:mvn:Group/Artifact/version does a quick and easy
> install.
>
>
> Have you checked the imports/exports of your bundles? From the Karaf
> console "headers <bundle-id>".
>
>
> regards,
> Ramesh
>
>
Thanks Chris, that helped me verify bundle.
Re: explicitly make one bundle aware of other ?
Posted by ramesh chandra <ta...@gmail.com>.
On 06/22/2012 10:25 PM, Johan Edstrom wrote:
> If you actually want to shade cassandra the following works.
> You just need to add the maven bundle plugin to this, you'll have a complete
> cassandra bundle that contains all the necessary bits and pieces.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <project xmlns="http://maven.apache.org/POM/4.0.0"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
> <parent>
> <artifactId>bundles</artifactId>
> <groupId>com.savoirtech</groupId>
> <version>1.0-SNAPSHOT</version>
> </parent>
> <modelVersion>4.0.0</modelVersion>
> <artifactId>cassandra-all</artifactId>
> <packaging>bundle</packaging>
> <dependencies>
> <dependency>
> <groupId>org.apache.cassandra</groupId>
> <artifactId>cassandra-all</artifactId>
> </dependency>
> </dependencies>
> <build>
> <plugins>
> <plugin>
> <artifactId>maven-shade-plugin</artifactId>
> <executions>
> <execution>
> <phase>package</phase>
> <goals>
> <goal>shade</goal>
> </goals>
> <configuration>
> <artifactSet>
> <includes>
> <include>${pkgGroupId}:${pkgArtifactId}</include>
> </includes>
> </artifactSet>
> <filters>
> <filter>
> <artifact>${pkgGroupId}:${pkgArtifactId}</artifact>
> <excludes>
> <exclude>**</exclude>
> </excludes>
> </filter>
> </filters>
> <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
> <createDependencyReducedPom>false</createDependencyReducedPom>
> <keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>
> </configuration>
> </execution>
> </executions>
> </plugin>
> </plugins>
> </build>
> <properties>
> <pkgVersion>${cassandra.version}</pkgVersion>
> <pkgArtifactId>commons-codec</pkgArtifactId>
> <savoirtech.osgi.export.pkg>org.apache.cassandra.*;version=${cassandra.version},
> org.apache.thrift.*;version=${cassandra.version}
> </savoirtech.osgi.export.pkg>
> <pkgGroupId>cassandra-all</pkgGroupId>
> </properties>
> </project>
>
> On Jun 22, 2012, at 9:17 PM, Chris Geer wrote:
>
>> On Fri, Jun 22, 2012 at 7:46 PM, ramesh chandra<ta...@gmail.com> wrote:
>> On 06/22/2012 09:08 PM, Chris Geer wrote:
>>> On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra<ta...@gmail.com> wrote:
>>> I have wrapped an external library ( Cassandra - Hector Client ) as a bundle , but I am constantly getting a ClassNotFoundException. So , I tried passing the missing (Thrift Library) after wrapping as a bundle, but it does not help either.
>>>
>>> How did you go about making it a bundle?
>>>
>>> Is there any other way I can explicitly make one bundle aware of other ?
>>>
>>> You need to make sure two things happen. Your Cassandra bundle exports the correct packages and your other bundle imports the correct packages.
>>>
>>> Just in case if anyone has see it , this is the error
>>>
>>> Caused by: java.lang. ClassNotFoundException: org.apache.thrift.transport. TTransportException not found by me.prettyprint.hector [169]
>>>
>>> at org.apache.felix.framework. ModuleImpl. findClassOrResourceByDelegatio n(ModuleImpl.java:787)
>>> at org.apache.felix.framework. ModuleImpl.access$400( ModuleImpl.java:71)
>>> at org.apache.felix.framework. ModuleImpl$ModuleClassLoader. loadClass(ModuleImpl.java: 1768)
>>> at java.lang.ClassLoader. loadClass(ClassLoader.java: 247)[:1.6.0_26]
>>>
>>> ... 41 more
>>>
>>> appreciate any help
>>>
>>> kind regards,
>>> Ramesh
>>>
>> Hi Chris,
>>
>> Thanks for the input. Karaf has a beautiful wrapper for external library
>> osgi:install wrap:mvn:Group/Artifact/version does a quick and easy install.
>>
>> Have you checked the imports/exports of your bundles? From the Karaf console "headers<bundle-id>".
>>
>> regards,
>> Ramesh
>>
Thanks Johan, I will try the same for both cassandra and hector client.
regards,
Ramesh
Re: explicitly make one bundle aware of other ?
Posted by Johan Edstrom <se...@gmail.com>.
If you actually want to shade cassandra the following works.
You just need to add the maven bundle plugin to this, you'll have a complete
cassandra bundle that contains all the necessary bits and pieces.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>bundles</artifactId>
<groupId>com.savoirtech</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cassandra-all</artifactId>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>org.apache.cassandra</groupId>
<artifactId>cassandra-all</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<includes>
<include>${pkgGroupId}:${pkgArtifactId}</include>
</includes>
</artifactSet>
<filters>
<filter>
<artifact>${pkgGroupId}:${pkgArtifactId}</artifact>
<excludes>
<exclude>**</exclude>
</excludes>
</filter>
</filters>
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
<createDependencyReducedPom>false</createDependencyReducedPom>
<keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<pkgVersion>${cassandra.version}</pkgVersion>
<pkgArtifactId>commons-codec</pkgArtifactId>
<savoirtech.osgi.export.pkg>org.apache.cassandra.*;version=${cassandra.version},
org.apache.thrift.*;version=${cassandra.version}
</savoirtech.osgi.export.pkg>
<pkgGroupId>cassandra-all</pkgGroupId>
</properties>
</project>
On Jun 22, 2012, at 9:17 PM, Chris Geer wrote:
>
> On Fri, Jun 22, 2012 at 7:46 PM, ramesh chandra <ta...@gmail.com> wrote:
> On 06/22/2012 09:08 PM, Chris Geer wrote:
>> On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra <ta...@gmail.com> wrote:
>> I have wrapped an external library ( Cassandra - Hector Client ) as a bundle , but I am constantly getting a ClassNotFoundException. So , I tried passing the missing (Thrift Library) after wrapping as a bundle, but it does not help either.
>>
>> How did you go about making it a bundle?
>>
>> Is there any other way I can explicitly make one bundle aware of other ?
>>
>> You need to make sure two things happen. Your Cassandra bundle exports the correct packages and your other bundle imports the correct packages.
>>
>> Just in case if anyone has see it , this is the error
>>
>> Caused by: java.lang. ClassNotFoundException: org.apache.thrift.transport. TTransportException not found by me.prettyprint.hector [169]
>>
>> at org.apache.felix.framework. ModuleImpl. findClassOrResourceByDelegatio n(ModuleImpl.java:787)
>> at org.apache.felix.framework. ModuleImpl.access$400( ModuleImpl.java:71)
>> at org.apache.felix.framework. ModuleImpl$ModuleClassLoader. loadClass(ModuleImpl.java: 1768)
>> at java.lang.ClassLoader. loadClass(ClassLoader.java: 247)[:1.6.0_26]
>>
>> ... 41 more
>>
>> appreciate any help
>>
>> kind regards,
>> Ramesh
>>
> Hi Chris,
>
> Thanks for the input. Karaf has a beautiful wrapper for external library
> osgi:install wrap:mvn:Group/Artifact/version does a quick and easy install.
>
> Have you checked the imports/exports of your bundles? From the Karaf console "headers <bundle-id>".
>
> regards,
> Ramesh
>
Re: explicitly make one bundle aware of other ?
Posted by Chris Geer <ch...@cxtsoftware.com>.
On Fri, Jun 22, 2012 at 7:46 PM, ramesh chandra <ta...@gmail.com> wrote:
> On 06/22/2012 09:08 PM, Chris Geer wrote:
>
> On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra <ta...@gmail.com>wrote:
>
> I have wrapped an external library ( Cassandra - Hector Client ) as a
> bundle , but I am constantly getting a ClassNotFoundException. So , I tried
> passing the missing (Thrift Library) after wrapping as a bundle, but it
> does not help either.
>
> How did you go about making it a bundle?
>
>
> Is there any other way I can explicitly make one bundle aware of other ?
>
>
> You need to make sure two things happen. Your Cassandra bundle exports
> the correct packages and your other bundle imports the correct packages.
>
>
> Just in case if anyone has see it , this is the error
>
> Caused by: java.lang. ClassNotFoundException: org.apache.thrift.transport.
> TTransportException not found by me.prettyprint.hector [169]
>
> at org.apache.felix.framework. ModuleImpl.
> findClassOrResourceByDelegatio n(ModuleImpl.java:787)
> at org.apache.felix.framework. ModuleImpl.access$400(
> ModuleImpl.java:71)
> at org.apache.felix.framework. ModuleImpl$ModuleClassLoader.
> loadClass(ModuleImpl.java: 1768)
> at java.lang.ClassLoader. loadClass(ClassLoader.java: 247)[:1.6.0_26]
>
> ... 41 more
>
> appreciate any help
>
> kind regards,
> Ramesh
>
>
> Hi Chris,
>
> Thanks for the input. Karaf has a beautiful wrapper for external library
> osgi:install wrap:mvn:Group/Artifact/version does a quick and easy
> install.
>
Have you checked the imports/exports of your bundles? From the Karaf
console "headers <bundle-id>".
>
> regards,
> Ramesh
>
Re: explicitly make one bundle aware of other ?
Posted by ramesh chandra <ta...@gmail.com>.
On 06/22/2012 09:08 PM, Chris Geer wrote:
> On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra <tableters@gmail.com
> <ma...@gmail.com>> wrote:
>
> I have wrapped an external library ( Cassandra - Hector Client )
> as a bundle , but I am constantly getting a
> ClassNotFoundException. So , I tried passing the missing (Thrift
> Library) after wrapping as a bundle, but it does not help either.
>
> How did you go about making it a bundle?
>
> Is there any other way I can explicitly make one bundle aware of
> other ?
>
>
> You need to make sure two things happen. Your Cassandra bundle exports
> the correct packages and your other bundle imports the correct packages.
>
>
> Just in case if anyone has see it , this is the error
>
> Caused by: java.lang. ClassNotFoundException:
> org.apache.thrift.transport. TTransportException not found by
> me.prettyprint.hector [169]
> at org.apache.felix.framework. ModuleImpl.
> findClassOrResourceByDelegatio n(ModuleImpl.java:787)
> at org.apache.felix.framework. ModuleImpl.access$400(
> ModuleImpl.java:71)
> at org.apache.felix.framework. ModuleImpl$ModuleClassLoader.
> loadClass(ModuleImpl.java: 1768)
> at java.lang.ClassLoader. loadClass(ClassLoader.java:
> 247)[:1.6.0_26]
> ... 41 more
>
> appreciate any help
>
> kind regards,
> Ramesh
>
>
Hi Chris,
Thanks for the input. Karaf has a beautiful wrapper for external library
osgi:install wrap:mvn:Group/Artifact/version does a quick and easy install.
regards,
Ramesh
Re: explicitly make one bundle aware of other ?
Posted by Chris Geer <ch...@cxtsoftware.com>.
On Fri, Jun 22, 2012 at 5:12 PM, ramesh chandra <ta...@gmail.com> wrote:
> I have wrapped an external library ( Cassandra - Hector Client ) as a
> bundle , but I am constantly getting a ClassNotFoundException. So , I tried
> passing the missing (Thrift Library) after wrapping as a bundle, but it
> does not help either.
>
> How did you go about making it a bundle?
> Is there any other way I can explicitly make one bundle aware of other ?
>
You need to make sure two things happen. Your Cassandra bundle exports the
correct packages and your other bundle imports the correct packages.
>
> Just in case if anyone has see it , this is the error
>
> Caused by: java.lang.**ClassNotFoundException:
> org.apache.thrift.transport.**TTransportException not found by
> me.prettyprint.hector [169]
> at org.apache.felix.framework.**ModuleImpl.**
> findClassOrResourceByDelegatio**n(ModuleImpl.java:787)
> at org.apache.felix.framework.**ModuleImpl.access$400(**
> ModuleImpl.java:71)
> at org.apache.felix.framework.**ModuleImpl$ModuleClassLoader.**
> loadClass(ModuleImpl.java:**1768)
> at java.lang.ClassLoader.**loadClass(ClassLoader.java:**247)[:1.6.0_26]
> ... 41 more
>
> appreciate any help
>
> kind regards,
> Ramesh
>