renatoathaydes / osgi-run

Osgi-Run - A Gradle plugin to make the development of modular applications using OSGi completely painless
Apache License 2.0
54 stars 13 forks source link

Bundle all "compile" dependencies into a fat jar bundle #62

Open shumy opened 7 years ago

shumy commented 7 years ago

Is it possible to build a fat jar with all transitive dependencies (conflicts resolved similar to maven), and select just the packages that I need to export for my plugin architecture? No matter what I try, I always get in trouble with dependency resolution, last one was about "Invalid syntax for version" when generating the manifest for "raml-parser-2". I will rather prefer to build a core bundle with all that I need, and skip this bunch of problems. I know this is not very good OSGi paradigm, I don't care!

renatoathaydes commented 7 years ago

This version problem might be because you're using an old version of the bnd plugin to create your bundle... check if you can upgrade the bnd version, maybe that helps with that problem (also ensure you're using the latest version of osgi-run).

But regarding the fat jar. That's a good idea and would be easy to do.

I will give it a shot in the next few days.

shumy commented 7 years ago

I think I have the last one! I don't have bnd cmd tool installed on my Ubuntu 16. It has worked without it!

My build.gradle:

plugins {
  id 'java'
  id 'org.xtext.xtend' version '1.0.17'       // http://xtext.github.io/xtext-gradle-plugin/xtend.html
  id 'org.dm.bundle' version '0.10.0'         // https://github.com/TomDmitriev/gradle-bundle-plugin
  id 'com.athaydes.osgi-run' version '1.5.4'  // https://github.com/renatoathaydes/osgi-run
}

group 'com.github.shumy'
version '1.0'

sourceCompatibility = 1.8

defaultTasks 'createOsgiRuntime'
repositories.mavenCentral()

jar {
  manifest {
    attributes("Bundle-Name": "LEFFE - Web Gateway")
  }
}

sourceSets {
  main {
    java.srcDirs= ['src/main']
    xtendOutputDir = 'build/xtend-gen'
  }
  test {
    java.srcDirs= ['src/test']
    xtendOutputDir = 'build/test/xtend-gen'
  }
}

dependencies {
  compile 'org.ops4j.pax.logging:pax-logging-api:1.9.1'
  compile 'org.eclipse.xtend:org.eclipse.xtend.lib:2.11.0'
  compile 'org.osgi:org.osgi.service.component.annotations:1.3.0'
  compile 'io.vertx:vertx-core:3.4.1'
  //compile 'org.raml:raml-parser-2:1.0.7'

  osgiRuntime 'org.apache.felix:org.apache.felix.configadmin:1.8.14'
  osgiRuntime 'org.apache.felix:org.apache.felix.scr:2.0.8', { transitive = false }
}

bundle {
  instruction '-dsannotations', '*'
}

runOsgi {
  config += [ 'org.osgi.framework.system.packages.extra': 'sun.misc' ]
  bundles += [ project ]
  outDir = '../runtime'
}

Maybe I can solve the problem, as I have solved some that were appearing, but it's one more in the pipeline. I want to work on my product, not spending time solving OSGi stuff. Maybe that's why developers give up on OSGi!

Building a core bundle similar to a simple fat jar to start in, sometimes make sense for a small product. It will be really nice thanks.

renatoathaydes commented 7 years ago

I know the feeling :)

This plugin is meant to make OSGi more usable, but there's still more room for improvement.

I checked your dependencies and I agree, you have the latest... to avoid future errors for other people, though, it would be good to try to find out where the version is being rejected... I thought it was an older version of bnd because they used to be very strict with versions in bundles, but lately there's a MavenVersion class which should accept almost anything, including 5.

I will check that later, let me know if you have more information.

Anyway, if you want to work around these stupid issues, make your problematic dependencies use systemLib. Then, they will work just like in the flat Java classpath, and the packages will be exported by the OSGi environment itself to all bundles.

shumy commented 7 years ago

Unfortunately "systemLib" also doesn't work when adding the "org.raml:raml-parser-2:1.0.7" dependency. It gets rid of build errors, but the OSGi container is complaining a lot when starting. Here's the big log:

ERROR: Error parsing system bundle export statement: org.osgi.dto; version=1.0.0, org.osgi.framework; version=1.8.0, org.osgi.framework.dto; version=1.8.0, org.osgi.framework.hooks.bundle; version=1.1.0, org.osgi.framework.hooks.resolver; version=1.0.0, org.osgi.framework.hooks.service; version=1.1.0, org.osgi.framework.hooks.weaving; version=1.1.0, org.osgi.framework.launch; version=1.2.0, org.osgi.framework.namespace; version=1.1.0, org.osgi.framework.startlevel; version=1.0.0, org.osgi.framework.startlevel.dto; version=1.0.0, org.osgi.framework.wiring; version=1.2.0, org.osgi.framework.wiring.dto; version=1.2.0, org.osgi.resource; version=1.0.0, org.osgi.resource.dto; version=1.0.0, org.osgi.service.packageadmin; version=1.2.0, org.osgi.service.resolver; version=1.0.0, org.osgi.service.startlevel; version=1.1.0, org.osgi.service.url; version=1.0.0, org.osgi.util.tracker; version=1.5.1 , javax.accessibility;uses:="javax.swing.text";version="0.0.0.1_008_JavaSE", javax.activation;version="0.0.0.1_008_JavaSE", javax.activity;version="0.0.0.1_008_JavaSE", javax.annotation.processing;uses:="javax.tools,javax.lang.model,javax.lang.model.element,javax.lang.model.util";version="0.0.0.1_008_JavaSE", javax.annotation;version="0.0.0.1_008_JavaSE", javax.crypto.interfaces;uses:="javax.crypto.spec,javax.crypto";version="0.0.0.1_008_JavaSE", javax.crypto.spec;uses:="javax.crypto";version="0.0.0.1_008_JavaSE", javax.crypto;uses:="javax.crypto.spec";version="0.0.0.1_008_JavaSE", javax.imageio.event;uses:="javax.imageio";version="0.0.0.1_008_JavaSE", javax.imageio.metadata;uses:="org.w3c.dom,javax.imageio";version="0.0.0.1_008_JavaSE", javax.imageio.plugins.bmp;uses:="javax.imageio";version="0.0.0.1_008_JavaSE", javax.imageio.plugins.jpeg;uses:="javax.imageio";version="0.0.0.1_008_JavaSE", javax.imageio.spi;uses:="javax.imageio.stream,javax.imageio,javax.imageio.metadata";version="0.0.0.1_008_JavaSE", javax.imageio.stream;uses:="javax.imageio";version="0.0.0.1_008_JavaSE", javax.imageio;uses:="javax.imageio.metadata,javax.imageio.stream,javax.imageio.spi,javax.imageio.event";version="0.0.0.1_008_JavaSE", javax.jws.soap;version="0.0.0.1_008_JavaSE", javax.jws;version="0.0.0.1_008_JavaSE", javax.lang.model.element;uses:="javax.lang.model.type,javax.lang.model";version="0.0.0.1_008_JavaSE", javax.lang.model.type;uses:="javax.lang.model.element,javax.lang.model";version="0.0.0.1_008_JavaSE", javax.lang.model.util;uses:="javax.lang.model,javax.lang.model.element,javax.annotation.processing,javax.lang.model.type";version="0.0.0.1_008_JavaSE", javax.lang.model;version="0.0.0.1_008_JavaSE", javax.management.loading;uses:="javax.management";version="0.0.0.1_008_JavaSE", javax.management.modelmbean;uses:="javax.management,javax.management.loading";version="0.0.0.1_008_JavaSE", javax.management.monitor;uses:="javax.management";version="0.0.0.1_008_JavaSE", javax.management.openmbean;uses:="javax.management";version="0.0.0.1_008_JavaSE", javax.management.relation;uses:="javax.management";version="0.0.0.1_008_JavaSE", javax.management.remote.rmi;uses:="javax.management.remote,javax.security.auth,javax.management,javax.management.loading,javax.naming,javax.rmi.ssl,org.omg.CORBA,org.omg.CORBA_2_3.portable,org.omg.CORBA.portable,javax.rmi.CORBA,javax.rmi";version="0.0.0.1_008_JavaSE", javax.management.remote;uses:="javax.security.auth,javax.management";version="0.0.0.1_008_JavaSE", javax.management.timer;uses:="javax.management";version="0.0.0.1_008_JavaSE", javax.management;uses:="javax.management.loading,javax.management.openmbean";version="0.0.0.1_008_JavaSE", javax.naming.directory;uses:="javax.naming";version="0.0.0.1_008_JavaSE", javax.naming.event;uses:="javax.naming,javax.naming.directory";version="0.0.0.1_008_JavaSE", javax.naming.ldap;uses:="javax.naming,javax.naming.directory,javax.net.ssl,javax.naming.event";version="0.0.0.1_008_JavaSE", javax.naming.spi;uses:="javax.naming,javax.naming.directory";version="0.0.0.1_008_JavaSE", javax.naming;uses:="javax.naming.spi";version="0.0.0.1_008_JavaSE", javax.net.ssl;uses:="javax.security.cert,javax.security.auth.x500,javax.net";version="0.0.0.1_008_JavaSE", javax.net;version="0.0.0.1_008_JavaSE", javax.print.attribute.standard;uses:="javax.print.attribute";version="0.0.0.1_008_JavaSE", javax.print.attribute;version="0.0.0.1_008_JavaSE", javax.print.event;uses:="javax.print,javax.print.attribute";version="0.0.0.1_008_JavaSE", javax.print;uses:="javax.print.attribute,javax.print.event,javax.print.attribute.standard";version="0.0.0.1_008_JavaSE", javax.rmi.CORBA;uses:="org.omg.CORBA,org.omg.CORBA_2_3.portable,org.omg.CORBA.portable,org.omg.SendingContext";version="0.0.0.1_008_JavaSE", javax.rmi.ssl;uses:="javax.net,javax.net.ssl";version="0.0.0.1_008_JavaSE", javax.rmi;uses:="org.omg.CORBA,javax.rmi.CORBA";version="0.0.0.1_008_JavaSE", javax.script;version="0.0.0.1_008_JavaSE", javax.security.auth.callback;version="0.0.0.1_008_JavaSE", javax.security.auth.kerberos;uses:="javax.security.auth,javax.crypto";version="0.0.0.1_008_JavaSE", javax.security.auth.login;uses:="javax.security.auth,javax.security.auth.callback";version="0.0.0.1_008_JavaSE", javax.security.auth.spi;uses:="javax.security.auth.callback,javax.security.auth.login,javax.security.auth";version="0.0.0.1_008_JavaSE", javax.security.auth.x500;uses:="javax.security.auth";version="0.0.0.1_008_JavaSE", javax.security.auth;version="0.0.0.1_008_JavaSE", javax.security.cert;version="0.0.0.1_008_JavaSE", javax.security.sasl;uses:="javax.security.auth.callback";version="0.0.0.1_008_JavaSE", javax.sound.midi.spi;uses:="javax.sound.midi";version="0.0.0.1_008_JavaSE", javax.sound.midi;uses:="javax.sound.midi.spi";version="0.0.0.1_008_JavaSE", javax.sound.sampled.spi;uses:="javax.sound.sampled";version="0.0.0.1_008_JavaSE", javax.sound.sampled;uses:="javax.sound.sampled.spi";version="0.0.0.1_008_JavaSE", javax.sql.rowset.serial;uses:="javax.sql.rowset";version="0.0.0.1_008_JavaSE", javax.sql.rowset.spi;uses:="javax.sql,javax.naming,javax.sql.rowset";version="0.0.0.1_008_JavaSE", javax.sql.rowset;uses:="javax.sql,javax.sql.rowset.serial,javax.sql.rowset.spi";version="0.0.0.1_008_JavaSE", javax.sql;uses:="javax.transaction.xa";version="0.0.0.1_008_JavaSE", javax.swing.border;uses:="javax.swing";version="0.0.0.1_008_JavaSE", javax.swing.colorchooser;uses:="javax.swing,javax.swing.border,javax.swing.event,javax.swing.text";version="0.0.0.1_008_JavaSE", javax.swing.event;uses:="javax.swing,javax.swing.text,javax.swing.table,javax.swing.tree,javax.swing.undo";version="0.0.0.1_008_JavaSE", javax.swing.filechooser;uses:="javax.swing";version="0.0.0.1_008_JavaSE", javax.swing.plaf.basic;uses:="javax.swing.border,javax.swing,javax.swing.plaf,javax.swing.text,javax.swing.event,javax.swing.colorchooser,javax.accessibility,javax.swing.filechooser,javax.swing.text.html,javax.sound.sampled,javax.swing.table,javax.swing.plaf.synth,javax.swing.tree";version="0.0.0.1_008_JavaSE", javax.swing.plaf.metal;uses:="javax.swing.plaf,javax.swing,javax.swing.border,javax.swing.text,javax.swing.plaf.basic,javax.swing.filechooser,javax.swing.event,javax.swing.tree";version="0.0.0.1_008_JavaSE", javax.swing.plaf.multi;uses:="javax.accessibility,javax.swing,javax.swing.plaf,javax.swing.filechooser,javax.swing.text,javax.swing.tree";version="0.0.0.1_008_JavaSE", javax.swing.plaf.nimbus;uses:="javax.swing,javax.swing.plaf,javax.swing.border,javax.swing.plaf.synth";version="0.0.0.1_008_JavaSE", javax.swing.plaf.synth;uses:="javax.swing,javax.swing.plaf,javax.swing.text,javax.swing.border,javax.swing.plaf.basic,javax.swing.colorchooser,javax.swing.event,javax.xml.parsers,org.xml.sax,org.xml.sax.helpers,javax.swing.table,javax.swing.tree";version="0.0.0.1_008_JavaSE", javax.swing.plaf;uses:="javax.swing,javax.swing.border,javax.accessibility,javax.swing.filechooser,javax.swing.text,javax.swing.tree";version="0.0.0.1_008_JavaSE", javax.swing.table;uses:="javax.swing.event,javax.swing.plaf,javax.swing.border,javax.swing,javax.accessibility";version="0.0.0.1_008_JavaSE", javax.swing.text.html.parser;uses:="javax.swing.text,javax.swing.text.html";version="0.0.0.1_008_JavaSE", javax.swing.text.html;uses:="javax.swing.event,javax.swing.text,javax.accessibility,javax.swing,javax.swing.plaf,javax.swing.border,javax.swing.undo";version="0.0.0.1_008_JavaSE", javax.swing.text.rtf;uses:="javax.swing.text";version="0.0.0.1_008_JavaSE", javax.swing.text;uses:="javax.swing.event,javax.swing.tree,javax.swing.undo,javax.swing,javax.swing.plaf,javax.swing.plaf.basic,javax.print,javax.print.attribute,javax.accessibility,javax.swing.text.html";version="0.0.0.1_008_JavaSE", javax.swing.tree;uses:="javax.swing.event,javax.swing,javax.swing.border,javax.swing.plaf,javax.swing.plaf.basic";version="0.0.0.1_008_JavaSE", javax.swing.undo;uses:="javax.swing,javax.swing.event";version="0.0.0.1_008_JavaSE", javax.swing;uses:="javax.swing.event,javax.accessibility,javax.swing.text,javax.swing.plaf,javax.swing.border,javax.swing.tree,javax.swing.table,javax.swing.colorchooser,javax.swing.plaf.basic,javax.swing.text.html,javax.swing.filechooser,javax.print,javax.print.attribute,javax.swing.plaf.metal";version="0.0.0.1_008_JavaSE", javax.tools;uses:="javax.lang.model.element,javax.annotation.processing,javax.lang.model";version="0.0.0.1_008_JavaSE", javax.transaction.xa;version="0.0.0.1_008_JavaSE", javax.transaction;version="0.0.0.1_008_JavaSE", javax.xml.bind.annotation.adapters;uses:="javax.xml.bind";version="0.0.0.1_008_JavaSE", javax.xml.bind.annotation;uses:="javax.xml.transform,javax.xml.bind,javax.xml.parsers,javax.xml.transform.dom,org.w3c.dom";version="0.0.0.1_008_JavaSE", javax.xml.bind.attachment;uses:="javax.activation";version="0.0.0.1_008_JavaSE", javax.xml.bind.helpers;uses:="javax.xml.bind.annotation.adapters,javax.xml.transform.dom,org.w3c.dom,org.xml.sax,javax.xml.bind.attachment,javax.xml.stream,javax.xml.transform,javax.xml.transform.stream,javax.xml.validation,javax.xml.transform.sax,javax.xml.bind,javax.xml.parsers";version="0.0.0.1_008_JavaSE", javax.xml.bind.util;uses:="javax.xml.transform.sax,javax.xml.bind,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers";version="0.0.0.1_008_JavaSE", javax.xml.bind;uses:="javax.xml.validation,javax.xml.namespace,javax.xml.datatype,javax.xml.transform,javax.xml.bind.annotation,javax.xml.transform.stream,org.w3c.dom,javax.xml.bind.attachment,javax.xml.stream,javax.xml.bind.annotation.adapters,org.xml.sax";version="0.0.0.1_008_JavaSE", javax.xml.crypto.dom;uses:="javax.xml.crypto,org.w3c.dom";version="0.0.0.1_008_JavaSE", javax.xml.crypto.dsig.dom;uses:="javax.xml.crypto.dsig,javax.xml.crypto,org.w3c.dom,javax.xml.crypto.dom";version="0.0.0.1_008_JavaSE", javax.xml.crypto.dsig.keyinfo;uses:="javax.xml.crypto";version="0.0.0.1_008_JavaSE", javax.xml.crypto.dsig.spec;uses:="javax.xml.crypto";version="0.0.0.1_008_JavaSE", javax.xml.crypto.dsig;uses:="javax.xml.crypto,javax.xml.crypto.dsig.spec,javax.xml.crypto.dsig.keyinfo";version="0.0.0.1_008_JavaSE", javax.xml.crypto;uses:="javax.xml.crypto.dsig.keyinfo";version="0.0.0.1_008_JavaSE", javax.xml.datatype;uses:="javax.xml.namespace";version="0.0.0.1_008_JavaSE", javax.xml.namespace;version="0.0.0.1_008_JavaSE", javax.xml.parsers;uses:="javax.xml.validation,org.w3c.dom,org.xml.sax,org.xml.sax.helpers";version="0.0.0.1_008_JavaSE", javax.xml.soap;uses:="javax.activation,javax.xml.namespace,org.w3c.dom,javax.xml.transform.dom,javax.xml.transform";version="0.0.0.1_008_JavaSE", javax.xml.stream.events;uses:="javax.xml.namespace,javax.xml.stream";version="0.0.0.1_008_JavaSE", javax.xml.stream.util;uses:="javax.xml.stream,javax.xml.stream.events,javax.xml.namespace";version="0.0.0.1_008_JavaSE", javax.xml.stream;uses:="javax.xml.stream.events,javax.xml.namespace,javax.xml.stream.util,javax.xml.transform";version="0.0.0.1_008_JavaSE", javax.xml.transform.dom;uses:="javax.xml.transform,org.w3c.dom";version="0.0.0.1_008_JavaSE", javax.xml.transform.sax;uses:="org.xml.sax.ext,javax.xml.transform,org.xml.sax,javax.xml.transform.stream";version="0.0.0.1_008_JavaSE", javax.xml.transform.stax;uses:="javax.xml.stream,javax.xml.transform,javax.xml.stream.events";version="0.0.0.1_008_JavaSE", javax.xml.transform.stream;uses:="javax.xml.transform";version="0.0.0.1_008_JavaSE", javax.xml.transform;version="0.0.0.1_008_JavaSE", javax.xml.validation;uses:="org.w3c.dom.ls,javax.xml.transform,javax.xml.transform.stream,org.xml.sax,org.w3c.dom";version="0.0.0.1_008_JavaSE", javax.xml.ws.handler.soap;uses:="javax.xml.ws.handler,javax.xml.namespace,javax.xml.soap,javax.xml.bind";version="0.0.0.1_008_JavaSE", javax.xml.ws.handler;uses:="javax.xml.ws,javax.xml.namespace";version="0.0.0.1_008_JavaSE", javax.xml.ws.http;uses:="javax.xml.ws";version="0.0.0.1_008_JavaSE", javax.xml.ws.soap;uses:="javax.xml.ws.spi,javax.xml.ws,javax.xml.soap";version="0.0.0.1_008_JavaSE", javax.xml.ws.spi.http;version="0.0.0.1_008_JavaSE", javax.xml.ws.spi;uses:="javax.xml.ws,javax.xml.ws.wsaddressing,javax.xml.transform,org.w3c.dom,javax.xml.namespace,javax.xml.ws.handler,javax.xml.bind";version="0.0.0.1_008_JavaSE", javax.xml.ws.wsaddressing;uses:="javax.xml.bind.annotation,javax.xml.namespace,org.w3c.dom,javax.xml.transform,javax.xml.bind,javax.xml.ws,javax.xml.ws.spi";version="0.0.0.1_008_JavaSE", javax.xml.ws;uses:="javax.xml.ws.handler,javax.xml.ws.spi,javax.xml.ws.spi.http,javax.xml.transform,org.w3c.dom,javax.xml.bind.annotation,javax.xml.transform.stream,javax.xml.bind,javax.xml.namespace";version="0.0.0.1_008_JavaSE", javax.xml.xpath;uses:="org.xml.sax,javax.xml.namespace";version="0.0.0.1_008_JavaSE", javax.xml;version="0.0.0.1_008_JavaSE", org.ietf.jgss;version="0.0.0.1_008_JavaSE", org.omg.CORBA.DynAnyPackage;uses:="org.omg.CORBA";version="0.0.0.1_008_JavaSE", org.omg.CORBA.ORBPackage;uses:="org.omg.CORBA";version="0.0.0.1_008_JavaSE", org.omg.CORBA.TypeCodePackage;uses:="org.omg.CORBA";version="0.0.0.1_008_JavaSE", org.omg.CORBA.portable;uses:="org.omg.CORBA,org.omg.CORBA_2_3.portable";version="0.0.0.1_008_JavaSE", org.omg.CORBA;uses:="org.omg.CORBA.portable,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA_2_3.portable,org.omg.CORBA.TypeCodePackage";version="0.0.0.1_008_JavaSE", org.omg.CORBA_2_3.portable;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.CORBA_2_3;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.CosNaming.NamingContextExtPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.CosNaming.NamingContextPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.CosNaming";version="0.0.0.1_008_JavaSE", org.omg.CosNaming;uses:="org.omg.CORBA.portable,org.omg.CORBA,org.omg.PortableServer,org.omg.CosNaming.NamingContextPackage,org.omg.CosNaming.NamingContextExtPackage";version="0.0.0.1_008_JavaSE", org.omg.Dynamic;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.DynamicAny.DynAnyFactoryPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.DynamicAny.DynAnyPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.DynamicAny;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage";version="0.0.0.1_008_JavaSE", org.omg.IOP.CodecFactoryPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.IOP.CodecPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.IOP;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage";version="0.0.0.1_008_JavaSE", org.omg.Messaging;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.PortableInterceptor.ORBInitInfoPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.PortableInterceptor;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.IOP,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.CORBA_2_3.portable,org.omg.Dynamic";version="0.0.0.1_008_JavaSE", org.omg.PortableServer.CurrentPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.PortableServer.POAManagerPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.PortableServer.POAPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.PortableServer.ServantLocatorPackage;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.PortableServer.portable;uses:="org.omg.CORBA,org.omg.PortableServer";version="0.0.0.1_008_JavaSE", org.omg.PortableServer;uses:="org.omg.CORBA,org.omg.CORBA.portable,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer.POAManagerPackage,org.omg.PortableServer.POAPackage,org.omg.PortableServer.portable,org.omg.CORBA_2_3,org.omg.PortableServer.ServantLocatorPackage";version="0.0.0.1_008_JavaSE", org.omg.SendingContext;uses:="org.omg.CORBA,org.omg.CORBA.portable";version="0.0.0.1_008_JavaSE", org.omg.stub.java.rmi;uses:="javax.rmi.CORBA";version="0.0.0.1_008_JavaSE", org.w3c.dom.bootstrap;uses:="org.w3c.dom";version="0.0.0.1_008_JavaSE", org.w3c.dom.events;uses:="org.w3c.dom,org.w3c.dom.views";version="0.0.0.1_008_JavaSE", org.w3c.dom.ls;uses:="org.w3c.dom,org.w3c.dom.events,org.w3c.dom.traversal";version="0.0.0.1_008_JavaSE", org.w3c.dom;version="0.0.0.1_008_JavaSE", org.xml.sax.ext;uses:="org.xml.sax,org.xml.sax.helpers";version="0.0.0.1_008_JavaSE", org.xml.sax.helpers;uses:="org.xml.sax";version="0.0.0.1_008_JavaSE", org.xml.sax;version="0.0.0.1_008_JavaSE",sun.misc,org.slf4j.helpers;version=1.7.14,org.slf4j;version=1.7.14,org.slf4j.spi;version=1.7.14,org.osgi.service.component.annotations;version=1.3.0.201505202023,com.github.fge.jackson;version=1.8,com.github.fge.jackson.jsonpointer;version=1.8,org.raml.v2.internal.utils;version=2-1.0,org.raml.v2.internal.utils.xml;version=2-1.0,org.raml.v2.internal.impl;version=2-1.0,org.raml.v2.internal.impl.emitter.tck;version=2-1.0,org.raml.v2.internal.impl.v10.phase;version=2-1.0,org.raml.v2.internal.impl.v10.rules;version=2-1.0,org.raml.v2.internal.impl.v10;version=2-1.0,org.raml.v2.internal.impl.v10.grammar;version=2-1.0,org.raml.v2.internal.impl.v10.nodes.factory;version=2-1.0,org.raml.v2.internal.impl.v10.nodes;version=2-1.0,org.raml.v2.internal.impl.v10.type;version=2-1.0,org.raml.v2.internal.impl.commons;version=2-1.0,org.raml.v2.internal.impl.commons.phase;version=2-1.0,org.raml.v2.internal.impl.commons.suggester;version=2-1.0,org.raml.v2.internal.impl.commons.grammar;version=2-1.0,org.raml.v2.internal.impl.commons.type;version=2-1.0,org.raml.v2.internal.impl.commons.rule;version=2-1.0,org.raml.v2.internal.impl.commons.nodes;version=2-1.0,org.raml.v2.internal.impl.commons.model;version=2-1.0,org.raml.v2.internal.impl.commons.model.parameter;version=2-1.0,org.raml.v2.internal.impl.commons.model.type;version=2-1.0,org.raml.v2.internal.impl.commons.model.factory;version=2-1.0,org.raml.v2.internal.impl.v08.grammar;version=2-1.0,org.raml.v2.internal.impl.v08.phase;version=2-1.0,org.raml.v2.internal.impl.v08;version=2-1.0,org.raml.v2.internal.impl.v08.nodes;version=2-1.0,org.raml.v2.api;version=2-1.0,org.raml.v2.api.model.common;version=2-1.0,org.raml.v2.api.model.v08.resources;version=2-1.0,org.raml.v2.api.model.v08.api;version=2-1.0,org.raml.v2.api.model.v08.methods;version=2-1.0,org.raml.v2.api.model.v08.bodies;version=2-1.0,org.raml.v2.api.model.v08.parameters;version=2-1.0,org.raml.v2.api.model.v08.security;version=2-1.0,org.raml.v2.api.model.v08.common;version=2-1.0,org.raml.v2.api.model.v08.system.types;version=2-1.0,org.raml.v2.api.model.v10.api;version=2-1.0,org.raml.v2.api.model.v10;version=2-1.0,org.raml.v2.api.model.v10.bodies;version=2-1.0,org.raml.v2.api.model.v10.resources;version=2-1.0,org.raml.v2.api.model.v10.parameters;version=2-1.0,org.raml.v2.api.model.v10.security;version=2-1.0,org.raml.v2.api.model.v10.methods;version=2-1.0,org.raml.v2.api.model.v10.datamodel;version=2-1.0,org.raml.v2.api.model.v10.common;version=2-1.0,org.raml.v2.api.model.v10.declarations;version=2-1.0,org.raml.v2.api.model.v10.system.types;version=2-1.0,com.github.fge.uritemplate;version=0.9,com.github.fge.uritemplate.expression;version=0.9,com.github.fge.uritemplate.vars;version=0.9,com.github.fge.uritemplate.vars.values;version=0.9,com.github.fge.uritemplate.vars.specs;version=0.9,com.github.fge.uritemplate.render;version=0.9,com.github.fge.uritemplate.parse;version=0.9,io.netty.resolver;version=4.1.8.Final,org.apache.commons.io;version=2.4.0,org.apache.commons.io.comparator;version=2.4.0,org.apache.commons.io.filefilter;version=2.4.0,org.apache.commons.io.input;version=2.4.0,org.apache.commons.io.monitor;version=2.4.0,org.apache.commons.io.output;version=2.4.0,com.fasterxml.jackson.databind;version=2.7.4,com.fasterxml.jackson.databind.annotation;version=2.7.4,com.fasterxml.jackson.databind.cfg;version=2.7.4,com.fasterxml.jackson.databind.deser;version=2.7.4,com.fasterxml.jackson.databind.deser.impl;version=2.7.4,com.fasterxml.jackson.databind.deser.std;version=2.7.4,com.fasterxml.jackson.databind.exc;version=2.7.4,com.fasterxml.jackson.databind.ext;version=2.7.4,com.fasterxml.jackson.databind.introspect;version=2.7.4,com.fasterxml.jackson.databind.jsonFormatVisitors;version=2.7.4,com.fasterxml.jackson.databind.jsonschema;version=2.7.4,com.fasterxml.jackson.databind.jsontype;version=2.7.4,com.fasterxml.jackson.databind.jsontype.impl;version=2.7.4,com.fasterxml.jackson.databind.module;version=2.7.4,com.fasterxml.jackson.databind.node;version=2.7.4,com.fasterxml.jackson.databind.ser;version=2.7.4,com.fasterxml.jackson.databind.ser.impl;version=2.7.4,com.fasterxml.jackson.databind.ser.std;version=2.7.4,com.fasterxml.jackson.databind.type;version=2.7.4,com.fasterxml.jackson.databind.util;version=2.7.4,org.mozilla.universalchardet;version=1.0,org.mozilla.universalchardet.prober;version=1.0,org.mozilla.universalchardet.prober.contextanalysis;version=1.0,org.mozilla.universalchardet.prober.distributionanalysis;version=1.0,org.mozilla.universalchardet.prober.sequence;version=1.0,org.mozilla.universalchardet.prober.statemachine;version=1.0,org.apache.commons.lang;version=2.6,org.apache.commons.lang.builder;version=2.6,org.apache.commons.lang.enum;version=2.6,org.apache.commons.lang.enums;version=2.6,org.apache.commons.lang.exception;version=2.6,org.apache.commons.lang.math;version=2.6,org.apache.commons.lang.mutable;version=2.6,org.apache.commons.lang.reflect;version=2.6,org.apache.commons.lang.text;version=2.6,org.apache.commons.lang.time;version=2.6,io.netty.handler.codec;version=4.1.8.Final,io.netty.handler.codec.protobuf;version=4.1.8.Final,io.netty.handler.codec.bytes;version=4.1.8.Final,io.netty.handler.codec.serialization;version=4.1.8.Final,io.netty.handler.codec.compression;version=4.1.8.Final,io.netty.handler.codec.string;version=4.1.8.Final,io.netty.handler.codec.xml;version=4.1.8.Final,io.netty.handler.codec.marshalling;version=4.1.8.Final,io.netty.handler.codec.base64;version=4.1.8.Final,io.netty.handler.codec.json;version=4.1.8.Final,com.fasterxml.jackson.core;version=2.7.4,com.fasterxml.jackson.core.base;version=2.7.4,com.fasterxml.jackson.core.filter;version=2.7.4,com.fasterxml.jackson.core.format;version=2.7.4,com.fasterxml.jackson.core.io;version=2.7.4,com.fasterxml.jackson.core.json;version=2.7.4,com.fasterxml.jackson.core.sym;version=2.7.4,com.fasterxml.jackson.core.type;version=2.7.4,com.fasterxml.jackson.core.util;version=2.7.4,com.fasterxml.jackson.module.jsonSchema;version=2.4.4,com.fasterxml.jackson.module.jsonSchema.annotation;version=2.4.4,com.fasterxml.jackson.module.jsonSchema.customProperties;version=2.4.4,com.fasterxml.jackson.module.jsonSchema.factories;version=2.4.4,com.fasterxml.jackson.module.jsonSchema.types;version=2.4.4,org.yaml.snakeyaml;version=1.15.0,org.yaml.snakeyaml.composer;version=1.15.0,org.yaml.snakeyaml.constructor;version=1.15.0,org.yaml.snakeyaml.emitter;version=1.15.0,org.yaml.snakeyaml.error;version=1.15.0,org.yaml.snakeyaml.events;version=1.15.0,org.yaml.snakeyaml.extensions.compactnotation;version=1.15.0,org.yaml.snakeyaml.external.biz.base64Coder;version=1.15.0,org.yaml.snakeyaml.external.com.google.gdata.util.common.base;version=1.15.0,org.yaml.snakeyaml.introspector;version=1.15.0,org.yaml.snakeyaml.nodes;version=1.15.0,org.yaml.snakeyaml.parser;version=1.15.0,org.yaml.snakeyaml.reader;version=1.15.0,org.yaml.snakeyaml.representer;version=1.15.0,org.yaml.snakeyaml.resolver;version=1.15.0,org.yaml.snakeyaml.scanner;version=1.15.0,org.yaml.snakeyaml.serializer;version=1.15.0,org.yaml.snakeyaml.tokens;version=1.15.0,org.yaml.snakeyaml.util;version=1.15.0,io.netty.handler.codec.http2;version=4.1.8.Final,io.netty.handler.codec.http2.internal.hpack;version=4.1.8.Final,io.netty.handler.codec.dns;version=4.1.8.Final,io.netty.handler.codec.socksx;version=4.1.8.Final,io.netty.handler.codec.socksx.v5;version=4.1.8.Final,io.netty.handler.codec.socksx.v4;version=4.1.8.Final,io.netty.handler.codec.socks;version=4.1.8.Final,org.eclipse.xtend2.lib;version=2.11.0.v20170124-1424,org.eclipse.xtext.xbase.lib;version=2.11.0.v20170124-1424,org.eclipse.xtext.xbase.lib.internal;version=2.11.0.v20170124-1424,org.eclipse.xtext.xbase.lib.util;version=2.11.0.v20170124-1424,io.netty.resolver.dns;version=4.1.8.Final,com.google.i18n.phonenumbers;version=6,com.google.common.annotations;version=18.0.0,com.google.common.base;version=18.0.0,com.google.common.base.internal;version=18.0.0,com.google.common.cache;version=18.0.0,com.google.common.collect;version=18.0.0,com.google.common.escape;version=18.0.0,com.google.common.eventbus;version=18.0.0,com.google.common.hash;version=18.0.0,com.google.common.html;version=18.0.0,com.google.common.io;version=18.0.0,com.google.common.math;version=18.0.0,com.google.common.net;version=18.0.0,com.google.common.primitives;version=18.0.0,com.google.common.reflect;version=18.0.0,com.google.common.util.concurrent;version=18.0.0,com.google.common.xml;version=18.0.0,com.google.thirdparty.publicsuffix;version=18.0.0,com.sun.activation.registries;version=1.1,com.sun.activation.viewers;version=1.1,javax.activation;version=1.1,org.mozilla.classfile;version=1.7R4,org.mozilla.javascript;version=1.7R4,org.mozilla.javascript.annotations;version=1.7R4,org.mozilla.javascript.ast;version=1.7R4,org.mozilla.javascript.commonjs.module;version=1.7R4,org.mozilla.javascript.commonjs.module.provider;version=1.7R4,org.mozilla.javascript.debug;version=1.7R4,org.mozilla.javascript.jdk13;version=1.7R4,org.mozilla.javascript.jdk15;version=1.7R4,org.mozilla.javascript.json;version=1.7R4,org.mozilla.javascript.optimizer;version=1.7R4,org.mozilla.javascript.regexp;version=1.7R4,org.mozilla.javascript.serialize;version=1.7R4,org.mozilla.javascript.tools;version=1.7R4,org.mozilla.javascript.tools.debugger;version=1.7R4,org.mozilla.javascript.tools.debugger.treetable;version=1.7R4,org.mozilla.javascript.tools.idswitch;version=1.7R4,org.mozilla.javascript.tools.jsc;version=1.7R4,org.mozilla.javascript.tools.shell;version=1.7R4,org.mozilla.javascript.v8dtoa;version=1.7R4,org.mozilla.javascript.xml;version=1.7R4,org.mozilla.javascript.xml.impl.xmlbeans;version=1.7R4,org.mozilla.javascript.xmlimpl;version=1.7R4,io.netty.handler.proxy;version=4.1.8.Final,javax.annotation;version=3.0,javax.annotation.concurrent;version=3.0,javax.annotation.meta;version=3.0,io.netty.buffer;version=4.1.8.Final,org.raml.v2.internal.utils;version=1.0,org.raml.v2.api.loader;version=1.0,org.raml.yagi.framework.util;version=1.0,org.raml.yagi.framework.nodes;version=1.0,org.raml.yagi.framework.nodes.snakeyaml;version=1.0,org.raml.yagi.framework.nodes.jackson;version=1.0,org.raml.yagi.framework.suggester;version=1.0,org.raml.yagi.framework.model;version=1.0,org.raml.yagi.framework.phase;version=1.0,org.raml.yagi.framework.grammar;version=1.0,org.raml.yagi.framework.grammar.rule;version=1.0,org.eclipse.xtend.lib;version=2.11.0.v20170124-1424,org.eclipse.xtend.lib.annotations;version=2.11.0.v20170124-1424,io.vertx.core;version=3.4.1,io.vertx.core.buffer;version=3.4.1,io.vertx.core.buffer.impl;version=3.4.1,io.vertx.core.cli;version=3.4.1,io.vertx.core.cli.annotations;version=3.4.1,io.vertx.core.cli.converters;version=3.4.1,io.vertx.core.cli.impl;version=3.4.1,io.vertx.core.datagram;version=3.4.1,io.vertx.core.datagram.impl;version=3.4.1,io.vertx.core.dns;version=3.4.1,io.vertx.core.dns.impl.decoder;version=3.4.1,io.vertx.core.dns.impl;version=3.4.1,io.vertx.core.eventbus;version=3.4.1,io.vertx.core.eventbus.impl;version=3.4.1,io.vertx.core.eventbus.impl.clustered;version=3.4.1,io.vertx.core.eventbus.impl.codecs;version=3.4.1,io.vertx.core.file;version=3.4.1,io.vertx.core.file.impl;version=3.4.1,io.vertx.core.http;version=3.4.1,io.vertx.core.http.impl;version=3.4.1,io.vertx.core.http.impl.cgbystrom;version=3.4.1,io.vertx.core.http.impl.ws;version=3.4.1,io.vertx.core.impl;version=3.4.1,io.vertx.core.impl.launcher;version=3.4.1,io.vertx.core.impl.launcher.commands;version=3.4.1,io.vertx.core.impl.resolver;version=3.4.1,io.vertx.core.impl.verticle;version=3.4.1,io.vertx.core.json;version=3.4.1,io.vertx.core.logging;version=3.4.1,io.vertx.core.metrics.impl;version=3.4.1,io.vertx.core.metrics;version=3.4.1,io.vertx.core.net;version=3.4.1,io.vertx.core.net.impl;version=3.4.1,io.vertx.core.parsetools.impl;version=3.4.1,io.vertx.core.parsetools;version=3.4.1,io.vertx.core.shareddata;version=3.4.1,io.vertx.core.shareddata.impl;version=3.4.1,io.vertx.core.spi;version=3.4.1,io.vertx.core.spi.cluster;version=3.4.1,io.vertx.core.spi.launcher;version=3.4.1,io.vertx.core.spi.logging;version=3.4.1,io.vertx.core.spi.metrics;version=3.4.1,io.vertx.core.spi.resolver;version=3.4.1,io.vertx.core.streams.impl;version=3.4.1,io.vertx.core.streams;version=3.4.1,com.github.fge;version=1.2,io.netty.handler.ssl;version=4.1.8.Final,io.netty.handler.ssl.util;version=4.1.8.Final,io.netty.handler.ipfilter;version=4.1.8.Final,io.netty.handler.flow;version=4.1.8.Final,io.netty.handler.traffic;version=4.1.8.Final,io.netty.handler.stream;version=4.1.8.Final,io.netty.handler.flush;version=4.1.8.Final,io.netty.handler.timeout;version=4.1.8.Final,io.netty.handler.logging;version=4.1.8.Final,com.github.fge.jsonschema.cfg;version=2.2.6,com.github.fge.jsonschema.library;version=2.2.6,com.github.fge.jsonschema.library.digest;version=2.2.6,com.github.fge.jsonschema.library.format;version=2.2.6,com.github.fge.jsonschema.library.validator;version=2.2.6,com.github.fge.jsonschema.keyword.digest;version=2.2.6,com.github.fge.jsonschema.keyword.digest.common;version=2.2.6,com.github.fge.jsonschema.keyword.digest.helpers;version=2.2.6,com.github.fge.jsonschema.keyword.digest.draftv3;version=2.2.6,com.github.fge.jsonschema.keyword.digest.draftv4;version=2.2.6,com.github.fge.jsonschema.keyword.validator;version=2.2.6,com.github.fge.jsonschema.keyword.validator.common;version=2.2.6,com.github.fge.jsonschema.keyword.validator.helpers;version=2.2.6,com.github.fge.jsonschema.keyword.validator.draftv3;version=2.2.6,com.github.fge.jsonschema.keyword.validator.draftv4;version=2.2.6,com.github.fge.jsonschema.format;version=2.2.6,com.github.fge.jsonschema.format.common;version=2.2.6,com.github.fge.jsonschema.format.helpers;version=2.2.6,com.github.fge.jsonschema.format.draftv3;version=2.2.6,com.github.fge.jsonschema.format.extra;version=2.2.6,com.github.fge.jsonschema.processors.data;version=2.2.6,com.github.fge.jsonschema.processors.validation;version=2.2.6,com.github.fge.jsonschema.processors.syntax;version=2.2.6,com.github.fge.jsonschema.processors.build;version=2.2.6,com.github.fge.jsonschema.processors.digest;version=2.2.6,com.github.fge.jsonschema.processors.format;version=2.2.6,com.github.fge.jsonschema.examples;version=2.2.6,com.github.fge.jsonschema.exceptions;version=2.2.6,com.github.fge.jsonschema.main;version=2.2.6,com.github.fge.jsonschema.main.cli;version=2.2.6,com.github.fge.jsonschema.messages;version=2.2.6,io.netty.channel;version=4.1.8.Final,io.netty.channel.oio;version=4.1.8.Final,io.netty.channel.group;version=4.1.8.Final,io.netty.channel.embedded;version=4.1.8.Final,io.netty.channel.local;version=4.1.8.Final,io.netty.channel.socket;version=4.1.8.Final,io.netty.channel.socket.oio;version=4.1.8.Final,io.netty.channel.socket.nio;version=4.1.8.Final,io.netty.channel.nio;version=4.1.8.Final,io.netty.channel.pool;version=4.1.8.Final,io.netty.bootstrap;version=4.1.8.Final,io.netty.util;version=4.1.8.Final,io.netty.util.internal;version=4.1.8.Final,io.netty.util.internal.chmv8;version=4.1.8.Final,io.netty.util.internal.logging;version=4.1.8.Final,io.netty.util.collection;version=4.1.8.Final,io.netty.util.concurrent;version=4.1.8.Final,io.netty.util.internal.shaded.org.jctools.queues;version=4.1.8.Final,io.netty.util.internal.shaded.org.jctools.queues.atomic;version=4.1.8.Final,io.netty.util.internal.shaded.org.jctools.util;version=4.1.8.Final,com.github.fge.jsonschema;version=1.2.5,com.github.fge.jsonschema.core.exceptions;version=1.2.5,com.github.fge.jsonschema.core.report;version=1.2.5,com.github.fge.jsonschema.core.util;version=1.2.5,com.github.fge.jsonschema.core.util.equivalence;version=1.2.5,com.github.fge.jsonschema.core.processing;version=1.2.5,com.github.fge.jsonschema.core.tree;version=1.2.5,com.github.fge.jsonschema.core.tree.key;version=1.2.5,com.github.fge.jsonschema.core.keyword.syntax;version=1.2.5,com.github.fge.jsonschema.core.keyword.syntax.checkers;version=1.2.5,com.github.fge.jsonschema.core.keyword.syntax.checkers.common;version=1.2.5,com.github.fge.jsonschema.core.keyword.syntax.checkers.helpers;version=1.2.5,com.github.fge.jsonschema.core.keyword.syntax.checkers.draftv3;version=1.2.5,com.github.fge.jsonschema.core.keyword.syntax.checkers.draftv4;version=1.2.5,com.github.fge.jsonschema.core.keyword.syntax.checkers.hyperschema;version=1.2.5,com.github.fge.jsonschema.core.keyword.syntax.dictionaries;version=1.2.5,com.github.fge.jsonschema.core.ref;version=1.2.5,com.github.fge.jsonschema.core.load;version=1.2.5,com.github.fge.jsonschema.core.load.uri;version=1.2.5,com.github.fge.jsonschema.core.load.configuration;version=1.2.5,com.github.fge.jsonschema.core.load.download;version=1.2.5,com.github.fge.jsonschema.core.messages;version=1.2.5,io.netty.handler.codec.spdy;version=4.1.8.Final,io.netty.handler.codec.rtsp;version=4.1.8.Final,io.netty.handler.codec.http;version=4.1.8.Final,io.netty.handler.codec.http.websocketx;version=4.1.8.Final,io.netty.handler.codec.http.websocketx.extensions;version=4.1.8.Final,io.netty.handler.codec.http.websocketx.extensions.compression;version=4.1.8.Final,io.netty.handler.codec.http.cors;version=4.1.8.Final,io.netty.handler.codec.http.multipart;version=4.1.8.Final,io.netty.handler.codec.http.cookie;version=4.1.8.Final,joptsimple;version=4,joptsimple.internal;version=4,joptsimple.util;version=4,edu.umd.cs.findbugs.annotations;version=2.0.3,net.jcip.annotations;version=2.0.3,javax.annotation;version=2.0.3,javax.annotation.concurrent;version=2.0.3,javax.annotation.meta;version=2.0.3,com.fasterxml.jackson.annotation;version=2.7.0,org.joda.time.base;version=2.3,org.joda.time.chrono;version=2.3,org.joda.time;version=2.3,org.joda.time.convert;version=2.3,org.joda.time.field;version=2.3,org.joda.time.format;version=2.3,org.joda.time.tz;version=2.3,org.apache.avalon.framework.logger;version=1.9.1,org.apache.commons.logging;version=1.9.1,org.apache.commons.logging.impl;version=1.9.1,org.apache.commons.logging.internal;version=1.9.1,org.apache.juli.logging;version=1.9.1,org.apache.juli.logging.internal;version=1.9.1,org.apache.log4j;version=1.9.1,org.apache.log4j.helpers;version=1.9.1,org.apache.log4j.internal;version=1.9.1,org.apache.log4j.spi;version=1.9.1,org.apache.log4j.xml;version=1.9.1,org.apache.logging.log4j;version=1.9.1,org.apache.logging.log4j.message;version=1.9.1,org.apache.logging.log4j.simple;version=1.9.1,org.apache.logging.log4j.spi;version=1.9.1,org.apache.logging.log4j.status;version=1.9.1,org.apache.logging.log4j.util;version=1.9.1,org.jboss.logging;version=1.9.1,org.knopflerfish.service.log;version=1.9.1,org.ops4j.pax.logging;version=1.9.1,org.ops4j.pax.logging.avalon;version=1.9.1,org.ops4j.pax.logging.internal;version=1.9.1,org.ops4j.pax.logging.internal.eventadmin;version=1.9.1,org.ops4j.pax.logging.log4jv2;version=1.9.1,org.ops4j.pax.logging.slf4j;version=1.9.1,org.ops4j.pax.logging.spi;version=1.9.1,org.osgi.service.log;version=1.9.1,org.slf4j;version=1.9.1,org.slf4j.helpers;version=1.9.1,org.slf4j.impl;version=1.9.1,org.slf4j.spi;version=1.9.1,org.apache.ws.commons.schema;version=2.2.1,org.apache.ws.commons.schema.constants;version=2.2.1,org.apache.ws.commons.schema.extensions;version=2.2.1,org.apache.ws.commons.schema.internal;version=2.2.1,org.apache.ws.commons.schema.resolver;version=2.2.1,org.apache.ws.commons.schema.utils;version=2.2.1,org.eclipse.xtend.lib.macro;version=2.11.0.v20170124-1424,org.eclipse.xtend.lib.macro.declaration;version=2.11.0.v20170124-1424,org.eclipse.xtend.lib.macro.services;version=2.11.0.v20170124-1424,org.eclipse.xtend.lib.macro.expression;version=2.11.0.v20170124-1424,org.eclipse.xtend.lib.macro.file;version=2.11.0.v20170124-1424,com.sun.mail.handlers;version=1.4.3,com.sun.mail.util.logging;version=1.4.3,com.sun.mail.util;version=1.4.3,javax.mail;version=1.4.3,javax.mail.internet;version=1.4.3,javax.mail.util;version=1.4.3,javax.mail.event;version=1.4.3,javax.mail.search;version=1.4.3,com.github.fge.msgsimple;version=1.1,com.github.fge.msgsimple.bundle;version=1.1,com.github.fge.msgsimple.provider;version=1.1,com.github.fge.msgsimple.source;version=1.1,com.github.fge.msgsimple.load;version=1.1,com.github.fge.msgsimple.locale;version=1.1 (java.lang.IllegalArgumentException: invalid version "2-1.0": non-numeric "2-1")
java.lang.IllegalArgumentException: invalid version "2-1.0": non-numeric "2-1"
    at org.osgi.framework.Version.parseInt(Version.java:170)
    at org.osgi.framework.Version.<init>(Version.java:126)
    at org.osgi.framework.Version.valueOf(Version.java:257)
    at org.osgi.framework.Version.parseVersion(Version.java:228)
    at org.apache.felix.framework.util.manifestparser.ManifestParser.normalizeExportClauses(ManifestParser.java:932)
    at org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:216)
    at org.apache.felix.framework.ExtensionManager.<init>(ExtensionManager.java:250)
    at org.apache.felix.framework.Felix.<init>(Felix.java:429)
    at org.apache.felix.framework.FrameworkFactory.newFramework(FrameworkFactory.java:28)
    at org.apache.felix.main.Main.main(Main.java:287)
Caused by: java.lang.NumberFormatException: For input string: "2-1"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at org.osgi.framework.Version.parseInt(Version.java:168)
    ... 9 more
ERROR: Bundle com.github.shumy.leffe-wg [1] Error starting file:/home/micael/git/leffe-wg/runtime/bundle/leffe-wg-1.0.jar (org.osgi.framework.BundleException: Unable to resolve com.github.shumy.leffe-wg [1](R 1.0): missing requirement [com.github.shumy.leffe-wg [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=io.vertx.core)(version>=3.4.0)(!(version>=4.0.0))) Unresolved requirements: [[com.github.shumy.leffe-wg [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=io.vertx.core)(version>=3.4.0)(!(version>=4.0.0)))])
org.osgi.framework.BundleException: Unable to resolve com.github.shumy.leffe-wg [1](R 1.0): missing requirement [com.github.shumy.leffe-wg [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=io.vertx.core)(version>=3.4.0)(!(version>=4.0.0))) Unresolved requirements: [[com.github.shumy.leffe-wg [1](R 1.0)] osgi.wiring.package; (&(osgi.wiring.package=io.vertx.core)(version>=3.4.0)(!(version>=4.0.0)))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.lang.Thread.run(Thread.java:745)
ERROR: Bundle org.apache.felix.configadmin [2] Error starting file:/home/micael/git/leffe-wg/runtime/bundle/org.apache.felix.configadmin-1.8.14.jar (org.osgi.framework.BundleException: Unable to resolve org.apache.felix.configadmin [2](R 2.0): missing requirement [org.apache.felix.configadmin [2](R 2.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.4.0)(!(version>=2.0.0))) Unresolved requirements: [[org.apache.felix.configadmin [2](R 2.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.4.0)(!(version>=2.0.0)))])
org.osgi.framework.BundleException: Unable to resolve org.apache.felix.configadmin [2](R 2.0): missing requirement [org.apache.felix.configadmin [2](R 2.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.4.0)(!(version>=2.0.0))) Unresolved requirements: [[org.apache.felix.configadmin [2](R 2.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.4.0)(!(version>=2.0.0)))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.lang.Thread.run(Thread.java:745)
ERROR: Bundle org.apache.felix.gogo.command [3] Error starting file:/home/micael/git/leffe-wg/runtime/bundle/org.apache.felix.gogo.command-0.16.0.jar (org.osgi.framework.BundleException: Unable to resolve org.apache.felix.gogo.command [3](R 3.0): missing requirement [org.apache.felix.gogo.command [3](R 3.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.5.0)(!(version>=2.0.0))) Unresolved requirements: [[org.apache.felix.gogo.command [3](R 3.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.5.0)(!(version>=2.0.0)))])
org.osgi.framework.BundleException: Unable to resolve org.apache.felix.gogo.command [3](R 3.0): missing requirement [org.apache.felix.gogo.command [3](R 3.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.5.0)(!(version>=2.0.0))) Unresolved requirements: [[org.apache.felix.gogo.command [3](R 3.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.framework)(version>=1.5.0)(!(version>=2.0.0)))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.lang.Thread.run(Thread.java:745)
ERROR: Bundle org.apache.felix.gogo.runtime [4] Error starting file:/home/micael/git/leffe-wg/runtime/bundle/org.apache.felix.gogo.runtime-0.16.2.jar (org.osgi.framework.BundleException: Unable to resolve org.apache.felix.gogo.runtime [4](R 4.0): missing requirement [org.apache.felix.gogo.runtime [4](R 4.0)] osgi.wiring.package; (osgi.wiring.package=org.osgi.framework) Unresolved requirements: [[org.apache.felix.gogo.runtime [4](R 4.0)] osgi.wiring.package; (osgi.wiring.package=org.osgi.framework)])
org.osgi.framework.BundleException: Unable to resolve org.apache.felix.gogo.runtime [4](R 4.0): missing requirement [org.apache.felix.gogo.runtime [4](R 4.0)] osgi.wiring.package; (osgi.wiring.package=org.osgi.framework) Unresolved requirements: [[org.apache.felix.gogo.runtime [4](R 4.0)] osgi.wiring.package; (osgi.wiring.package=org.osgi.framework)]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.lang.Thread.run(Thread.java:745)
ERROR: Bundle org.apache.felix.gogo.shell [5] Error starting file:/home/micael/git/leffe-wg/runtime/bundle/org.apache.felix.gogo.shell-0.12.0.jar (org.osgi.framework.BundleException: Unable to resolve org.apache.felix.gogo.shell [5](R 5.0): missing requirement [org.apache.felix.gogo.shell [5](R 5.0)] osgi.wiring.package; (osgi.wiring.package=org.osgi.framework) Unresolved requirements: [[org.apache.felix.gogo.shell [5](R 5.0)] osgi.wiring.package; (osgi.wiring.package=org.osgi.framework)])
org.osgi.framework.BundleException: Unable to resolve org.apache.felix.gogo.shell [5](R 5.0): missing requirement [org.apache.felix.gogo.shell [5](R 5.0)] osgi.wiring.package; (osgi.wiring.package=org.osgi.framework) Unresolved requirements: [[org.apache.felix.gogo.shell [5](R 5.0)] osgi.wiring.package; (osgi.wiring.package=org.osgi.framework)]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.lang.Thread.run(Thread.java:745)
ERROR: Bundle org.apache.felix.scr [6] Error starting file:/home/micael/git/leffe-wg/runtime/bundle/org.apache.felix.scr-2.0.8.jar (org.osgi.framework.BundleException: Unable to resolve org.apache.felix.scr [6](R 6.0): missing requirement [org.apache.felix.scr [6](R 6.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.dto)(version>=1.0.0)(!(version>=2.0.0))) Unresolved requirements: [[org.apache.felix.scr [6](R 6.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.dto)(version>=1.0.0)(!(version>=2.0.0)))])
org.osgi.framework.BundleException: Unable to resolve org.apache.felix.scr [6](R 6.0): missing requirement [org.apache.felix.scr [6](R 6.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.dto)(version>=1.0.0)(!(version>=2.0.0))) Unresolved requirements: [[org.apache.felix.scr [6](R 6.0)] osgi.wiring.package; (&(osgi.wiring.package=org.osgi.dto)(version>=1.0.0)(!(version>=2.0.0)))]
    at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4111)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.lang.Thread.run(Thread.java:745)
shumy commented 7 years ago

So, useful information for you. There are 2 transitive dependencies that are not being handled correctly. Once I changed the generated versions on config.properties for "org.osgi.framework.system.packages.extra" it worked.

1) raml-parser-2-1.0.7-sources.jar is generating 2-1.0 version 2) rhino-1.7R4-sources.jar is generating 1.7R4 version

Can I instruct the plugin to generate these correctly? Replacing (2-1.0 -> 1.0.7 and 1.7R4 -> 1.7)

renatoathaydes commented 7 years ago

Ah, this is the jar author's fault for not giving a version in the manifest file (so the plugin tries to guess the version from the file name)... Quite unfortunate in this case, as the "guessed" version is the wrong one!

It is possible to change the version of wrapped bundles but not of system libs (I think).

See Wrapping jars. You can do something like:

runOsgi {
    wrapInstructions {
        manifest( "raml-parser.*" ) {
            instruction 'Export-Package', 'raml,something'
            instruction 'Bundle-Version', '1.0.7'
        }
}
renatoathaydes commented 7 years ago

By the way, why do you have sources as dependencies? You might want to exclude those dependencies (just use the Gradle mechanism to do it).

renatoathaydes commented 7 years ago

I had a look at the code that "guesses" versions for jars missing the information... It's already doing it as good as it's possible.. I can make it translate versions to OSGi automatically to avoid errors (using bnd conversion to MavenVersion first, then to Version using getOsgiVersion()), but then it seems to do stupid things:

Wrapping non-bundle: raml-parser-2-1.0.7.jar
No instructions provided to wrap bundle raml-parser-2-1.0.7.jar, will use defaults and version 2.0.0.1.0
Wrapping non-bundle: yagi-1.0.7.jar
No instructions provided to wrap bundle yagi-1.0.7.jar, will use defaults and version 1.0.0
Wrapping non-bundle: juniversalchardet-1.0.3.jar
No instructions provided to wrap bundle juniversalchardet-1.0.3.jar, will use defaults and version 1.0.0
Wrapping non-bundle: jsr305-3.0.0.jar
No instructions provided to wrap bundle jsr305-3.0.0.jar, will use defaults and version 3.0.0
Wrapping non-bundle: libphonenumber-6.2.jar
No instructions provided to wrap bundle libphonenumber-6.2.jar, will use defaults and version 6.0.0
Wrapping non-bundle: jopt-simple-4.6.jar
No instructions provided to wrap bundle jopt-simple-4.6.jar, will use defaults and version 4.0.0
Wrapping non-bundle: rhino-1.7R4.jar
No instructions provided to wrap bundle rhino-1.7R4.jar, will use defaults and version 1.7.0.R4
Wrapping non-bundle: activation-1.1.jar
No instructions provided to wrap bundle activation-1.1.jar, will use defaults and version 1.1.0

Only a few look right.

The current code behaves like this (from the Spock tests):

        name                          | expectedVersion
        'hi.jar'                      | '1.0.0'
        'badFile'                     | '1.0.0'
        'lib-1.0.jar'                 | '1.0'
        'aopalliance-1.0.jar'         | '1.0'
        'lib-5.2.3.jar'               | '5.2.3'
        'aop-6.12.jar'                | '6.12'
        'commons-logging-1.1.1.jar'   | '1.1.1'
        'crazy-lib-name-0.1-SNAP.jar' | '0.1-SNAP'
        'raml-parser-2-1.0.7.jar'     | '2-1.0.7'
        'yagi-1.0.7.jar'              | '1.0.7'
        'rhino-1.7R4.jar'             | '1.7R4'

Whatever we do, we get errors either at compile time or at runtime :(

There must be a way to improve this, but I am not sure what that is.

renatoathaydes commented 7 years ago

I found a good alternative! All jars seem to contain Maven metadata in META-INF/maven/..../pom.properties.

Example:

#Generated by Maven
#Tue Mar 07 09:39:48 EST 2017
version=1.0.7
groupId=org.raml
artifactId=raml-parser-2

I will start using these files if they are available.

renatoathaydes commented 7 years ago

My above suggestion is implemented in the next branch. RAML still won't work due to having a really bad dependency tree.

It depends on two different versions of Guava (one from the jackson-core), so that needs to be explicitly declared as a osgiRuntime dependency... also, it depends on Rhino, which definitely can't work within OSGi, so I made it a systemLib... but then, as you noticed, it broke because its version, 1.7R4, is rejected by the OSGi runtime! So I needed to change the version of the system lib (in general) to convert to a valid OSGi version if necessary.

So, now I can get the RAML dependency working in OSGi... using the following Gradle deps:

dependencies {
    compile 'org.raml:raml-parser-2:1.0.7', {
        exclude( group: 'org.mozilla' )
    }
    systemLib 'org.mozilla:rhino:1.7R4'

    // needed by transitive deps of raml
    osgiRuntime 'com.google.guava:guava:16.0.1'

    // logging
    osgiRuntime 'com.athaydes.osgiaas:slf4j-to-osgi-log:1.7.0'
    osgiRuntime 'org.apache.felix:org.apache.felix.log:1.0.1', {
        transitive = false
    }

}

Of course, this won't help @shumy too much, I think, but versions are managed much more safely now, which is a good improvement for osgi-run!

renatoathaydes commented 7 years ago

@shumy FYI I finally release the improvements on parsing the wrapped jars (and system libs) versions on version 1.5.5. You may want to upgrade.