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
>>
>>
>