Search code examples
apache-karafkaraf

karaf: linking my code to a jar file


I am writing a karaf bundle which depends on an external jar library. I understand I may import this bundle in my features.xml using wrap but this means it gets loaded into its own classloader.

What I want is for my bundle's classloader to load whatever I access in this jar file and I want to make direct method calls to the classes in this jar file. How can I do this?

I don't want a new bundle - just a library that I can link my application to.

Thanks,


Solution

  • You can try to embed the external jar when building your bundle as follow:

           <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Export-Package>
                            ...,
                            root_package_in_external_jar*,
                            ...
                        </Export-Package>
                        <Import-Package>
                            ...
                        </Import-Package>
                        <Embed-Dependency>your_external_jar</Embed-Dependency>
                    </instructions>
                </configuration>
            </plugin>