Thanks a lot! As for you it seems possible to do the same thing for an assembly, I will then investigate more on this shade plugin.
-- Julien Plu PhD Student at Eurecom. Personal webpage: http://jplu.developpez.com FOAF file : http://jplu.developpez.com/julien Email address : [email protected] && *[email protected] <[email protected]>* Phone : +33493008103 Twitter : @julienplu 2016-02-05 14:49 GMT+01:00 Andy Seaborne <[email protected]>: > > But in my assembly jar, I still have the > > org.apache.jena.system.JenaSubsystemLifecycle file. How to make it > > works as well with assembly jars? > > Using an assembly to make a combined jar? I've not tried. It will need > somewhat to combine the service files into one - the transformer is > basically concatenating the contents of each file. Somehow, the same > process needs to happen. The shade plugin seems to make such things easier. > > Andy > > > > > On 05/02/16 11:41, Julien Plu wrote: > >> Hi Andy, >> >> Thanks! It indeed now works with the following lines added in my pom: >> >> <plugin> >> <groupId>org.apache.maven.plugins</groupId> >> <artifactId>maven-shade-plugin</artifactId> >> <version>1.6</version> >> <configuration> >> <shadedArtifactAttached>false</shadedArtifactAttached> >> <transformers> >> <transformer >> >> implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> >> <mainClass>Test</mainClass> >> </transformer> >> <transformer >> >> implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" >> /> >> </transformers> >> <filters> >> <filter> >> <artifact>*:*</artifact> >> </filter> >> </filters> >> </configuration> >> <executions> >> <execution> >> <phase>package</phase> >> <goals> >> <goal>shade</goal> >> </goals> >> </execution> >> </executions> >> </plugin> >> >> And it works with the new non executable jar that the plugin is creating. >> But in my assembly jar, I still have the >> org.apache.jena.system.JenaSubsystemLifecycle file. How to make it works >> as >> well with assembly jars? >> >> -- >> Julien Plu >> >> PhD Student at Eurecom. >> Personal webpage: http://jplu.developpez.com >> FOAF file : http://jplu.developpez.com/julien >> Email address : [email protected] && *[email protected] >> <[email protected]>* >> Phone : +33493008103 >> Twitter : @julienplu >> >> 2016-02-05 11:38 GMT+01:00 Andy Seaborne <[email protected]>: >> >> Hi Julien, >>> >>> The NPE is happening during system initialization. It looks like TDB >>> init >>> running before ARQ init. >>> >>> Jena now uses ServiceLoader for initialization. Each jena jar has a >>> META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle file >>> which >>> are combined to form the initializationprocess. >>> >>> My guess is that the combined jar has one services/JenaSubsystemLifecycle >>> file at random, in this case TDB's. >>> >>> Combining jars needs to cope with the services files. >>> >>> We do have a combined jar for Fuseki - the process it uses is to shade >>> (maven-shade-plugin) the jars together with a specific step to combine >>> services via ServicesResourceTransformer. See [*] for details. >>> >>> If you look in your executable jar, look for the services directory and >>> check the files there to see if that agrees with the guess above. >>> >>> Andy >>> >>> [*] >>> >>> >>> https://github.com/apache/jena/blob/master/jena-fuseki2/jena-fuseki-server/pom.xml#L62 >>> >>> >>> >>> >>> On 05/02/16 08:49, Julien Plu wrote: >>> >>> Hello, >>>> >>>> I have an issue to load RDF files only with the new Jena 3.0.1. With >>>> this >>>> simple code: >>>> >>>> import org.apache.jena.riot.RDFDataMgr; >>>> import org.apache.jena.rdf.model.Model; >>>> public class Test { >>>> public static void main(String[] args) { >>>> Model model = RDFDataMgr.loadModel("test.nt"); >>>> } >>>> } >>>> >>>> Where "test.nt" contains one simple triple: >>>> >>>> <http://dbpedia.org/resource/Barack_Obama> < >>>> http://www.w3.org/1999/02/22-rdf-syntax-ns#type> < >>>> http://dbpedia.org/ontology/Person> . >>>> >>>> If I compile this code with Maven to build an executable jar and run it >>>> with the command line: >>>> >>>> java -jar target/test.jar >>>> >>>> I get the following exception: >>>> >>>> log4j:WARN No appenders could be found for logger (Jena). >>>> >>>> log4j:WARN Please initialize the log4j system properly. >>>> >>>> log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig >>>> for >>>> more info. >>>> >>>> Exception in thread "main" java.lang.ExceptionInInitializerError >>>> >>>> at >>>> >>>> Test.main(Test.java:5) >>>> >>>> Caused by: java.lang.NullPointerException >>>> >>>> at >>>> >>>> >>>> org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33) >>>> >>>> at org.apache.jena.tdb.TDB.init(TDB.java:250) >>>> >>>> at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29) >>>> >>>> at org.apache.jena.system.JenaSystem.lambda$init$40(JenaSystem.java:114) >>>> >>>> at java.util.ArrayList.forEach(ArrayList.java:1249) >>>> >>>> at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:179) >>>> >>>> at org.apache.jena.system.JenaSystem.forEach(JenaSystem.java:156) >>>> >>>> at org.apache.jena.system.JenaSystem.init(JenaSystem.java:111) >>>> >>>> at org.apache.jena.riot.RDFDataMgr.<clinit>(RDFDataMgr.java:81) >>>> >>>> ... 2 more >>>> Any idea of what is going wrong? >>>> >>>> Thanks in advance. >>>> >>>> -- >>>> Julien Plu >>>> >>>> PhD Student at Eurecom. >>>> Personal webpage: http://jplu.developpez.com >>>> FOAF file : http://jplu.developpez.com/julien >>>> Email address : [email protected] && *[email protected] >>>> <[email protected]>* >>>> Phone : +33493008103 >>>> Twitter : @julienplu >>>> >>>> >>>> >>> >> >
