You're playing with fire.

Not providing all the dependencies at runtime that a library requires at 
compiling time is recipe for ClassDefNotFoundException which has plagued OSGi 
devs since the beginning of time.

> Subject: Re: managing OSGi Dependencies
> From: pedro.doming...@ist.utl.pt
> Date: Fri, 24 Oct 2014 23:14:41 +0100
> To: users@felix.apache.org; njbartl...@gmail.com
> 
> Could you share your example project so that I could get a closer look? 
> 
> Thanks! 
> 
> On October 24, 2014 5:25:36 PM WEST, Neil Bartlett <njbartl...@gmail.com> 
> wrote:
> >Further to this… I just created a Bndtools project to build a bundle
> >containing your sample “SuchInterface” interface, plus the entire
> >contents of the jscience.jar version 4.3.1 pulled from Maven Central.
> >The only imported package was org.xml.sax, which as I said is provided
> >by JavaSE. So there is no problem at all with this library. This job
> >took about 2 minutes and it resolves just fine in Felix.
> >
> >I think your mistake is confusing build-time dependencies for runtime
> >dependencies. This is why I recommend never to use Embed-Dependency:
> >Maven only knows about build-time dependencies are they are MUCH more
> >extensive than the runtime dependencies.
> >
> >Regards,
> >Neil
> >
> >
> >From: Neil Bartlett <njbartl...@gmail.com>
> >Reply: Neil Bartlett <njbartl...@gmail.com>>
> >Date: 24 October 2014 at 17:04:41
> >To: users@felix.apache.org <users@felix.apache.org>>, PedroD
> ><pedro.doming...@ist.utl.pt>>
> >Subject:  Re: managing OSGi Dependencies  
> >
> >The Conditional-Package instruction is documented
> >here: http://bnd.bndtools.org/chapters/800-headers.html. There is no
> >need to restrict yourself to reading only the maven-bundle-plugin
> >documentation. All instruction and headers supported by bnd are
> >supported by the Maven plugin, because the plugin passes them through.
> >
> >Also see my blog post about Conditional Package
> >use: http://njbartlett.name/2014/05/26/static-linking.html
> >
> >I strongly recommend against using Embed-Dependency, and even more so
> >Embed-Transitive! This is rather like using a nuclear ICBM to take
> >potshots at a paper target.
> >
> >Regarding the Joda and SAX imports, Bndtools can tell you where these
> >come from. Though if you use Conditional-Package, hopefully they won’t
> >arise, unless you actually use them of course. The SAX import is not a
> >problem because org.xml.sax is provided by JavaSE. Joda Convert is
> >available as an OSGi bundle
> >already: 
> >http://jpm4j.org/#!/p/sha/57C2432E54DC40F871F55295C676B22672713602//0.0.0
> >
> >Regards
> >Neil
> >
> >
> >From: PedroD <pedro.doming...@ist.utl.pt>
> >Reply: users@felix.apache.org <users@felix.apache.org>>
> >Date: 24 October 2014 at 16:36:43
> >To: users@felix.apache.org <users@felix.apache.org>>
> >Subject:  Re: managing OSGi Dependencies
> >
> >
> >Thanks
> >
> >
> >On 24 Oct 2014, at 15:52, Neil Bartlett <njbartl...@gmail.com> wrote:
> >
> >Hello Pedro,
> >
> >To help you I’d first like to understand your current approach a bit
> >better. You say you download these non-bundle dependencies and put them
> >in the “bundle” directory until you get no more dependency errors. What
> >effect does that have? Since they are not bundles, how does adding them
> >to a directory help?
> >
> >As Christian points out, the problem is really with these libraries.
> >Remember that Maven is also famous for downloading when you ask for the
> >slightest thing. The reason for this is poor internal coherency which
> >results in _fan out_. To explain:
> >
> >1. You depend on package org.foo which is part of the JAR file foolib.
> >2. foolib contains 20 other packages *that you are not using*
> >3. those 20 useless packages depend on five more JARs
> >4. GOTO 1.
> >
> >Turning these JARs into bundles doesn’t help because they still have
> >all those dependencies which all have to be resolved in order for OSGi
> >to be happy.
> >
> >A better solution is to pull in only the packages that you really need.
> >For example if you use the Conditional-Package instruction in bnd (also
> >available as Conditional_Package in the maven-bundle-plugin) then you
> >can create a bundle that includes only the packages that are referenced
> >by your core code. This doesn’t always help because sometimes people
> >have poor coherency even within their packages — general util packages
> >are a common problem, just look at the dependencies from java.util for
> >example — but it still easier to deal with than big messy JAR files.
> >
> >I hope that helps.
> >
> >Regards,
> >Neil 
> >
> >
> >From: PedroD <pedro.doming...@ist.utl.pt>
> >Reply: users@felix.apache.org <users@felix.apache.org>>
> >Date: 24 October 2014 at 15:03:41
> >To: users@felix.apache.org <users@felix.apache.org>>
> >Subject:  managing OSGi Dependencies  
> >
> >Greetings,  
> >
> >I’m using Felix Framework for my OSGi project, but I’ve came across a
> >severe problem concerning third party dependencies.  
> >
> >I’m using eclipse and maven-bundle-plugin to generate my bundles from
> >the sources and the MANIFEST.MF from the POM.XML file. So far so good.
> >however when I have some third party dependency in my bundle, I find
> >myself looking for an infinite list of JARs, which usually are not
> >bundles, and putting them in my /bundle Felix directory until no more
> >dependencies are missing.  
> >
> >I call this process “Downloading the Internet for my OSGi application
> >to work”.  
> >
> >What am I doing wrong? Sure I must be doing something very wrong,
> >because I can’t imagine anyone having a bundle A that depends on B,
> >which then depends on C and D, and then those two will depend on
> >several others and so on…  
> >
> >What is the correct way to automate this? I would love to have one of
> >the two solutions:  
> >
> >1) Be able to create a massive JAR file with all of its dependencies
> >embedded, but exporting only the packages I want, and, of corse, not
> >importing any package.  
> >
> >2) (My preferred solution) Having a way to get all my dependencies into
> >individual JAR files that I can simply paste into the /bundle
> >directory.  
> >
> >I have found tools that do me this, but they only do it for direct (1st
> >degree) dependencies, leaving transitive dependencies for me to solve
> >manually.  
> >
> >This problem is critical. The lack of such a tool hampers the usage of
> >OSGi. I’ve searched and searched and searched, I’ve came across all the
> >101 solutions such as PAX, bndtools, and friends, but they do not solve
> >this issue…  
> >
> >Please help me.  
> >
> >Thanks!  
> >---------------------------------------------------------------------  
> >To unsubscribe, e-mail: users-unsubscr...@felix.apache.org  
> >For additional commands, e-mail: users-h...@felix.apache.org  
> 
> -- 
> Sent from my Android device with K-9 Mail. Please excuse my brevity.
                                          

Reply via email to