Thanks Richard, I will try again and make the modifications. The problem is that I've tried so many configurations, and none of them have worked, due to some misunderstandings. Your feedback is helping quell some of these misunderstandings.
Best wishes, Eamonn On 21 Sep 2011, at 16:59, Richard S. Hall wrote: > On 9/21/11 11:47 AM, Eamonn Maguire wrote: >> Does anyone have a suggestion regarding this? >> >> I really appreciate the help! >> >> Eamonn >> >> On 20 Sep 2011, at 10:54, Eamonn Maguire wrote: >> >>> So I have an improvement. The bundling plugin is now adding in the jars and >>> giving me a size close to what I'm expecting when the dependencies are >>> imported (~36mb). >>> >>> My plugin definition now looks like follows: >>> >>> <plugin> >>> <groupId>org.apache.felix</groupId> >>> <artifactId>maven-bundle-plugin</artifactId> >>> <version>2.2.0</version> >>> <extensions>true</extensions> >>> >>> <configuration> >>> <instructions> >>> >>> <!--<Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>--> >>> <Import-Package>org.isatools.tablib.utils, >>> org.isatools.isatab.gui_invokers, >>> org.isatools.tablib.utils.logging, * >>> </Import-Package> >>> >>> <Export-Package>org.isatools.plugins.validatorconverter, * >>> </Export-Package> >>> >>> <Bundle-Activator>org.isatools.plugins.validatorconverter.Activator</Bundle-Activator> >>> <Bundle-Vendor>ISAteam</Bundle-Vendor> >>> >>> <Bundle-ClassPath>isavalidatorconvert,import_layer</Bundle-ClassPath> >>> </instructions> >>> </configuration> >>> </plugin> >>> >>> The only problem I have now is sorting out the imports/exports I guess. I'm >>> currently getting this message when starting of the plugin is attempted: >>> >>> ERROR: Error starting >>> file:/Users/eamonnmaguire/git/isarepo/ISAcreator/Plugins/isavalidatorconvert-1.0.jar >>> (org.osgi.framework.BundleException: Activator start error in bundle >>> org.isatools.plugins.isavalidatorconvert [1].) > > It might help to see the exception. If it is not being printed, try > changing the felix.log.level property in conf/config.properties to 4. > >>> >>> Before that, I was getting classnotfoundexceptions all over the place. >>> >>> Also, I feel that just using the wildcard * in imports and exports is wrong, > > Using * in Import-Package is usually the right thing to do. Using * in > Export-Package is generally not the right thing to do, since this will > embed everything on the project class path into your bundle. > > >>> but I am still unsure of how to satisfy all the requirements and ensure >>> that my package will be seen in ISAcreator. If I leave the * out of the >>> export-package value, the jar is very small and doesn't contain the >>> required dependencies. So, I am sure that the bundle classpath values are >>> incorrect. I thought just specifying the artifactIds was enough, but >>> obviously not from this message found when building the plugin code. > > The rules for building a bundle are pretty simple: > > 1. You choose which packages you want to be contained in the bundle > using a combination of Export-Package and Private-Package; both of > these copy packages into your bundle, but the former also exports > them to share with other bundles, while the latter doesn't. > 2. You import external packages needed by the packages you put into the > bundle in step 1; this is typically accomplished with > "Import-Package: *", which is the default. > > That's pretty much it. So, decide what you want in your bundle and then > import the rest. > > -> richard > >>> >>> [WARNING] Warning building bundle >>> org.isatools.plugins:isavalidatorconvert:bundle:1.0 : No sub JAR or >>> directory isavalidatorconvert >>> [WARNING] Warning building bundle >>> org.isatools.plugins:isavalidatorconvert:bundle:1.0 : No sub JAR or >>> directory import_layer >>> [WARNING] Warning building bundle >>> org.isatools.plugins:isavalidatorconvert:bundle:1.0 : Superfluous >>> export-package instructions: [*, org.isatools.plugins.validatorconverter] >>> [WARNING] Warning building bundle >>> org.isatools.plugins:isavalidatorconvert:bundle:1.0 : The Bundle-Classpath >>> does not contain the actual bundle JAR (as specified with '.' in the >>> Bundle-Classpath) but the JAR does contain classes. Is this intentional? >>> >>> BTW, the oode for the plugin in it's entirety can be seen here: >>> https://github.com/ISA-tools/ISAcreatorPlugins/tree/master/ValidatorConverter >>> >>> Thanks again for all the help, I really appreciate it! >>> >>> Eamonn >>> >>> >>> >>> On 20 Sep 2011, at 08:27, Eamonn Maguire wrote: >>> >>> [ERROR] Error building bundle >>> org.isatools.plugins:isavalidatorconvert:bundle:1.0 : Invalid class file: >>> *.class >>> >>> ^ It's actually due to the fact that an actual file called *.class is being >>> embedded into the final bundle. I had this problem before with another >>> project, and it wasn't anything to do with OSGi. It was actually down to a >>> maven plugin not working properly. I think it was maven-assembly but I >>> can't rightly remember at present. I will try and find the trace I made >>> about the problem and get back to you on this. >>> >>> I'll remove the osgi framework from the bundle. now and see what happens >>> with that. >>> >>> Thanks, >>> >>> Eamonn >>> >>> On 20 Sep 2011, at >>> 00:31,<[email protected]<mailto:[email protected]>> >>> <[email protected]<mailto:[email protected]>> wrote: >>> >>> >>> >>> This is a tough one, and my answer may be wrong, so I hope that other smart >>> developers on this list will read this and correct it if possible. A >>> "CAFEBABE" header is a hexadecimal string Ja va uses to identify ava >>> bytecode. So, what this is tellling me is that Java is unable to recognize >>> the .class file referred to hear as Java Bytecode. Where are you pulling >>> this file from? Also, what version of Java are you using? What version of >>> Java is required by the isatools plugins? >>> >>> >>> >>> v/r, >>> >>> >>> >>> Mike Van >>> >>> >>> >>> ----- Original Message ----- >>> >>> >>> From: "Eamonn >>> Maguire"<[email protected]<mailto:[email protected]>> >>> To: [email protected]<mailto:[email protected]> >>> Sent: Monday, September 19, 2011 5:36:45 PM >>> Subject: Re: Dependencies, Exports and Imports Query >>> >>> The full error there was: >>> >>> [ERROR] Error building bundle >>> org.isatools.plugins:isavalidatorconvert:bundle:1.0 : Exception: Not a >>> valid class file (no CAFEBABE header) >>> [ERROR] Error building bundle >>> org.isatools.plugins:isavalidatorconvert:bundle:1.0 : Invalid class file: >>> *.class >>> >>> For some reason, not everything copied. This is what you get when working >>> late :) >>> >>> Eamonn >>> >>> On 19 Sep 2011, at 22:35, Eamonn Maguire wrote: >>> >>> Hi, >>> >>> Thank you for your prompt response. So, I tried that and the following >>> problems have come up. >>> >>> [ERROR] Error building bundle >>> org.isatools.plugins:isavalidatorconvert:bundle:1.0 : Exception: Not a >>> valid class file (no CAFEBABE header) >>> >>> The edited pom.xml file I'm using is here: https://gist.github.com/1227576 >>> >>> Eamonn >>> >>> >>> On 19 Sep 2011, at >>> 22:22,<[email protected]<mailto:[email protected]>> wrote: >>> >>> >>> >>> Eamonn, >>> >>> >>> >>> The dependencies section is only really used to build your .jar file when >>> you have pakcages external to your bundle included in the Export-Package >>> section of your maven-bundle plugin. I believe the reason that you're >>> experiencing the bundling of your .jar file with your bundle is because of >>> your maven-assembly-plugin implementation. >>> >>> >>> What I would suggest you do is change your packaging type to "bundle", >>> comment out your maven-assembly-plugin section and attempt to compile >>> again. The maven-bundle-plugin will take care of most of the stuff you're >>> trying to do in your maven-assembly-plugin and is a cleaner approach. This >>> will also ensure that you don't get erroneous dependant .jar files compiled >>> in with your application. >>> >>> >>> >>> The dependancy is still needed if you have references to that external >>> library in your Import-Package section of your maven-bundle-plugin >>> implementation. >>> >>> >>> >>> So, in short, keep the dependancy, and comment out your >>> maven-assembly-plugin code. >>> >>> >>> >>> Please let me know if that helps! >>> >>> >>> >>> >>> >>> >>> ----- Original Message ----- >>> >>> >>> From: "Eamonn >>> Maguire"<[email protected]<mailto:[email protected]>> >>> To: [email protected]<mailto:[email protected]> >>> Sent: Monday, September 19, 2011 5:06:24 PM >>> Subject: Re: Dependencies, Exports and Imports Query >>> >>> Ah, I should have mentioned that BIIObjectStore is in the >>> org.isatools.tablib.utils package. >>> >>> Thanks again, >>> >>> Eamonn >>> >>> On 19 Sep 2011, at 21:58, Eamonn Maguire wrote: >>> >>> Hi all, >>> >>> I'm new to OSGi, I just started implementing before the weekend and >>> although the process was relatively pain free, I'm having some problems >>> with getting plugins to work without having all my dependencies in the host >>> project. >>> >>> For the plugin I'm using, the pom.xml file can be seen here: >>> https://gist.github.com/1227576 >>> >>> For the dependencies: >>> >>> 1) The ISAcreator dependency is the actual host program, where the plugins >>> are to be deployed. >>> 2) The import_layer artifact is used for validation and conversion, which >>> the plugin does and contains a class called BIIObjectStore (this becomes >>> relevant below). It is NOT an OSGi module. >>> >>> >>> The problem >>> Everything is working as long as the import_layer dependency is in the host >>> pom.xml dependencies, but this defeats the purpose of the plugin. But when >>> it's not included, I get a classnotfoundexception when I attempt to execute >>> the code in the plugin (there are no complaints when felix starts and the >>> plugin is loaded). I'm not totally sure why it's not working since the >>> resulting jar produced when I run mvn clean install contains the class. >>> It's just not being 'seen' when it is executed. >>> >>> The plugin configuration as seen in the file is probably not doing >>> something right, and as you can see, the current version of that file is >>> doing everything. >>> >>> Any help would be greatly appreciated. I feel like I'm banging my head >>> against a brick wall on this one. >>> >>> Many thanks, >>> >>> Eamonn Maguire >>> >>> >>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: >>> [email protected]<mailto:[email protected]> >>> For additional commands, e-mail: >>> [email protected]<mailto:[email protected]> >>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: >>> [email protected]<mailto:[email protected]> >>> For additional commands, e-mail: >>> [email protected]<mailto:[email protected]> >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

