You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by "Enrico Daga (enridaga)" <en...@gmail.com> on 2016/04/12 18:22:19 UTC
Initializing TDB/JenaSystem properly
Hi,
I want to use a TDB instance programmatically inside my application, but I am having troubles on TDB initialisation.
Particularly, when I try to TDBFactory.create(…) I get a NullPointerException as follows:
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 org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown Source)
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)
[…]
The strange thing is that it looks like ARQ.getContext() returns null in EnvTDB.java:33, meaning it still needs to be initialised. But then I see the call to JenaSystem.init() in a static block inside the ARQ class, that is supposed to be at the bottom of the above stack … Here I got confused.
I also tried to force JenaSystem.init(); in my main class, with the same behaviour.
I am using the following maven artefacts:
jena-tdb:3.0.1
jena-core:3.0.1
jena-arq:3.0.1
Maybe I am missing something?
Thank you for any hint!
Enrico
—
Enrico Daga (enridaga)
http://www.enridaga.net
Il budda e’ nel parco.
Re: Initializing TDB/JenaSystem properly
Posted by "Enrico Daga (enridaga)" <en...@gmail.com>.
Hi Andy,
that was it!
For the record, I solved using the maven-shade-plugin with this configuration:
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer”>
<mainClass>enridaga.jenainjetty.Main</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle</resource>
</transformer>
</transformers>
</configuration>
Thank you very much for the help :)
Best,
Enrico
—
Enrico Daga (enridaga)
http://www.enridaga.net <http://www.enridaga.net/>
Il budda e’ nel parco.
> On 13 Apr 2016, at 15:30, Andy Seaborne <an...@apache.org> wrote:
>
> Hi Enrico,
>
> Looks like the problem is that the assembly jar-with-dependencies is breaking the java service loader setup.
>
> Each module has it's own /META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle file.
>
> They all have the same java resource name.
>
> Fuseki uses the shade plugin and that makes a combined file.
>
> /META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle
>
> which is:
>
> -------------------------
> org.apache.jena.riot.system.InitRIOT
> org.apache.jena.sparql.system.InitARQ
> org.apache.jena.system.InitJenaCore
>
> org.apache.jena.tdb.sys.InitTDB
> org.apache.jena.query.text.InitJenaText
> org.apache.jena.query.spatial.InitJenaSpatial
> -------------------------
>
> Your setup reports only InitTDB so it looks like the last file overwrites and that last file is TDB's.
>
> You could use the shade plugin instead of the assembly plugin,
> or get the assembly plgin to do the same somehow
> or statically make sure the file has exactly the modules you are using.
>
> (Do not include modules that aren't in the system!)
>
> Andy
>
> On 13/04/16 11:02, Enrico Daga (enridaga) wrote:
>> Hi Andy,
>>
>> Hi Andy,
>>
>> The full stack trace is below.
>>
>> I also prepared a stand alone project to reproduce the problem [1,2].
>> In this example, while the problem is still there (ARQ context being null), the point is different (this time in SystemTDB.java:381);
>>
>> Best,
>> Enrico
>>
>> [1] https://github.com/enridaga/jena-system-in-jetty-debug/
>> [2] https://github.com/enridaga/jena-system-in-jetty-debug/blob/master/src/main/java/enridaga/jenainjetty/Application.java
>>
>> —
>> Enrico Daga (enridaga)
>> http://www.enridaga.net
>> Il budda e’ nel parco.
>>
>>
>> Stack trace in the original application:
>>
>> 2016-04-13 10:48:34 INFO Application:41 - Initializing context.
>> JenaSystem.init - start
>> InitTDB
>> Init: JenaInitLevel0
>> Init: InitTDB
>> TDB.init - start
>> 2016-04-13 10:48:35 INFO ServerConnector:270 - Started ServerConnector@6356695f{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
>> Exception in thread "main" java.lang.ExceptionInInitializerError
>> at dkarobo.server.webapp.Application.contextInitialized(Application.java:56)
>> at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:794)
>> at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:522)
>> at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:785)
>> at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:341)
>> at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1357)
>> at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1350)
>> at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:734)
>> at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:258)
>> at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:512)
>> at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
>> at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
>> at org.eclipse.jetty.server.Server.start(Server.java:405)
>> at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
>> at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
>> at org.eclipse.jetty.server.Server.doStart(Server.java:372)
>> at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
>> at dkarobo.server.cli.Main.main(Main.java:45)
>> 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 org.apache.jena.system.JenaSystem$$Lambda$5/1615056168.accept(Unknown Source)
>> 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.tdb.TDBFactory.<clinit>(TDBFactory.java:40)
>> ... 18 more
>>
>>
>>
>>> On 13 Apr 2016, at 10:04, Enrico Daga (enridaga) <en...@gmail.com> wrote:
>>>
>>> Thank you Andy,
>>> I’ll try that and let you know, eventually I will pack a thin maven project trying to reproduce the issue.
>>>
>>> Thanks a lot!
>>>
>>> Enrico
>>> —
>>> Enrico Daga (enridaga)
>>> http://www.enridaga.net
>>> Il budda e’ nel parco.
>>>
>>>
>>>
>>>
>>>
>>>> On 13 Apr 2016, at 09:59, Andy Seaborne <an...@apache.org> wrote:
>>>>
>>>> On 13/04/16 09:56, Andy Seaborne wrote:
>>>>> Hi Enrico,
>>>>>
>>>>> I was hoping to see the rest of the stack trace to see where the first
>>>>> entry point that causes initialization in Jena is happening.
>>>>>
>>>>> Do you have something I can build+run that is smaller? There are 4 maven
>>>>> modules there and 42 java files. There is an environmental factor here
>>>>> and I want to be runnign exactly what you are.
>>>>>
>>>>> A POM file, and code that is minimal (just Application? Does that fail?)
>>>>> would be helpful.
>>>>>
>>>>> Fuseki does:
>>>>>
>>>>> public void contextInitialized(ServletContextEvent sce) {
>>>>> JenaSystem.init() ;
>>>>>
>>>>>
>>>>> Andy
>>>>
>>>> PS As the first line in Application.contextInitialized
>>>>
>>>> try putting
>>>>
>>>> JenaSystem.DEBUG_INIT = true ;
>>>>
>>>> and see what comes out.
>>>>
>>>> Andy
>>>>
>>>>>
>>>>> On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
>>>>>> Hi Andy, thank you for you reply. You’re right, I was hoping it was
>>>>>> not a class loading issue and I simplified the question :)
>>>>>>
>>>>>> This happens within a ServletContextListener in a Jetty embedded
>>>>>> application [1]. In fact, I do not have any failure when I launch the
>>>>>> environment using mvn jetty:run, which I do during development. But
>>>>>> when I package the server, and I try to start it programmatically
>>>>>> [2], it fails as described in the previous email.
>>>>>>
>>>>>> However, if I force JenaSystem.init() in any way (included static
>>>>>> blocks in Application or Main), it still fails! I understand the app
>>>>>> class loader is different from the main one, but this consideration
>>>>>> alone does not help me much…
>>>>>>
>>>>>> Best, Enrico
>>>>>>
>>>>>>
>>>>>> [1]
>>>>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>>>>>>
>>>>>>
>>>>>>
>>>>> [2]
>>>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>>>>>
>>>>>>
>>>>>>
>>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>>> parco.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>>>>>>
>>>>>>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I want to use a TDB instance programmatically inside my
>>>>>>>> application, but I am having troubles on TDB initialisation.
>>>>>>>> Particularly, when I try to TDBFactory.create(…) I get a
>>>>>>>> NullPointerException as follows:
>>>>>>>>
>>>>>>>> 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 org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
>>>>> Source)
>>>>>>>> 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) […]
>>>>>>>
>>>>>>> What's the rest? In particular, what's causing the initialization
>>>>>>> process to start?
>>>>>>>
>>>>>>>>
>>>>>>>> The strange thing is that it looks like ARQ.getContext() returns
>>>>>>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>>>>>>> But then I see the call to JenaSystem.init() in a static block
>>>>>>>> inside the ARQ class, that is supposed to be at the bottom of the
>>>>>>>> above stack … Here I got confused.
>>>>>>>>
>>>>>>>> I also tried to force JenaSystem.init(); in my main class, with
>>>>>>>> the same behaviour. I am using the following maven artefacts:
>>>>>>>>
>>>>>>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>>>>>>
>>>>>>>> Maybe I am missing something?
>>>>>>>>
>>>>>>>> Thank you for any hint!
>>>>>>>
>>>>>>> Possibly an unexpected way in the system. Thats' what can cause
>>>>>>> ARQ.getContext() to be null - Java class initialization madness.
>>>>>>>
>>>>>>> Do you have a complete, minimal example?
>>>>>>>
>>>>>>>>
>>>>>>>> Enrico
>>>>>>>>
>>>>>>>>
>>>>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>>>>> parco.
>>>
>>
>
Re: Initializing TDB/JenaSystem properly
Posted by Andy Seaborne <an...@apache.org>.
Hi Enrico,
Looks like the problem is that the assembly jar-with-dependencies is
breaking the java service loader setup.
Each module has it's own
/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle file.
They all have the same java resource name.
Fuseki uses the shade plugin and that makes a combined file.
/META-INF/services/org.apache.jena.system.JenaSubsystemLifecycle
which is:
-------------------------
org.apache.jena.riot.system.InitRIOT
org.apache.jena.sparql.system.InitARQ
org.apache.jena.system.InitJenaCore
org.apache.jena.tdb.sys.InitTDB
org.apache.jena.query.text.InitJenaText
org.apache.jena.query.spatial.InitJenaSpatial
-------------------------
Your setup reports only InitTDB so it looks like the last file
overwrites and that last file is TDB's.
You could use the shade plugin instead of the assembly plugin,
or get the assembly plgin to do the same somehow
or statically make sure the file has exactly the modules you are using.
(Do not include modules that aren't in the system!)
Andy
On 13/04/16 11:02, Enrico Daga (enridaga) wrote:
> Hi Andy,
>
> Hi Andy,
>
> The full stack trace is below.
>
> I also prepared a stand alone project to reproduce the problem [1,2].
> In this example, while the problem is still there (ARQ context being null), the point is different (this time in SystemTDB.java:381);
>
> Best,
> Enrico
>
> [1] https://github.com/enridaga/jena-system-in-jetty-debug/
> [2] https://github.com/enridaga/jena-system-in-jetty-debug/blob/master/src/main/java/enridaga/jenainjetty/Application.java
>
> —
> Enrico Daga (enridaga)
> http://www.enridaga.net
> Il budda e’ nel parco.
>
>
> Stack trace in the original application:
>
> 2016-04-13 10:48:34 INFO Application:41 - Initializing context.
> JenaSystem.init - start
> InitTDB
> Init: JenaInitLevel0
> Init: InitTDB
> TDB.init - start
> 2016-04-13 10:48:35 INFO ServerConnector:270 - Started ServerConnector@6356695f{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
> Exception in thread "main" java.lang.ExceptionInInitializerError
> at dkarobo.server.webapp.Application.contextInitialized(Application.java:56)
> at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:794)
> at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:522)
> at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:785)
> at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:341)
> at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1357)
> at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1350)
> at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:734)
> at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:258)
> at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:512)
> at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
> at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
> at org.eclipse.jetty.server.Server.start(Server.java:405)
> at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
> at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
> at org.eclipse.jetty.server.Server.doStart(Server.java:372)
> at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
> at dkarobo.server.cli.Main.main(Main.java:45)
> 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 org.apache.jena.system.JenaSystem$$Lambda$5/1615056168.accept(Unknown Source)
> 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.tdb.TDBFactory.<clinit>(TDBFactory.java:40)
> ... 18 more
>
>
>
>> On 13 Apr 2016, at 10:04, Enrico Daga (enridaga) <en...@gmail.com> wrote:
>>
>> Thank you Andy,
>> I’ll try that and let you know, eventually I will pack a thin maven project trying to reproduce the issue.
>>
>> Thanks a lot!
>>
>> Enrico
>> —
>> Enrico Daga (enridaga)
>> http://www.enridaga.net
>> Il budda e’ nel parco.
>>
>>
>>
>>
>>
>>> On 13 Apr 2016, at 09:59, Andy Seaborne <an...@apache.org> wrote:
>>>
>>> On 13/04/16 09:56, Andy Seaborne wrote:
>>>> Hi Enrico,
>>>>
>>>> I was hoping to see the rest of the stack trace to see where the first
>>>> entry point that causes initialization in Jena is happening.
>>>>
>>>> Do you have something I can build+run that is smaller? There are 4 maven
>>>> modules there and 42 java files. There is an environmental factor here
>>>> and I want to be runnign exactly what you are.
>>>>
>>>> A POM file, and code that is minimal (just Application? Does that fail?)
>>>> would be helpful.
>>>>
>>>> Fuseki does:
>>>>
>>>> public void contextInitialized(ServletContextEvent sce) {
>>>> JenaSystem.init() ;
>>>>
>>>>
>>>> Andy
>>>
>>> PS As the first line in Application.contextInitialized
>>>
>>> try putting
>>>
>>> JenaSystem.DEBUG_INIT = true ;
>>>
>>> and see what comes out.
>>>
>>> Andy
>>>
>>>>
>>>> On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
>>>>> Hi Andy, thank you for you reply. You’re right, I was hoping it was
>>>>> not a class loading issue and I simplified the question :)
>>>>>
>>>>> This happens within a ServletContextListener in a Jetty embedded
>>>>> application [1]. In fact, I do not have any failure when I launch the
>>>>> environment using mvn jetty:run, which I do during development. But
>>>>> when I package the server, and I try to start it programmatically
>>>>> [2], it fails as described in the previous email.
>>>>>
>>>>> However, if I force JenaSystem.init() in any way (included static
>>>>> blocks in Application or Main), it still fails! I understand the app
>>>>> class loader is different from the main one, but this consideration
>>>>> alone does not help me much…
>>>>>
>>>>> Best, Enrico
>>>>>
>>>>>
>>>>> [1]
>>>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>>>>>
>>>>>
>>>>>
>>>> [2]
>>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>>>>
>>>>>
>>>>>
>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>> parco.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>>>>>
>>>>>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I want to use a TDB instance programmatically inside my
>>>>>>> application, but I am having troubles on TDB initialisation.
>>>>>>> Particularly, when I try to TDBFactory.create(…) I get a
>>>>>>> NullPointerException as follows:
>>>>>>>
>>>>>>> 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 org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
>>>> Source)
>>>>>>> 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) […]
>>>>>>
>>>>>> What's the rest? In particular, what's causing the initialization
>>>>>> process to start?
>>>>>>
>>>>>>>
>>>>>>> The strange thing is that it looks like ARQ.getContext() returns
>>>>>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>>>>>> But then I see the call to JenaSystem.init() in a static block
>>>>>>> inside the ARQ class, that is supposed to be at the bottom of the
>>>>>>> above stack … Here I got confused.
>>>>>>>
>>>>>>> I also tried to force JenaSystem.init(); in my main class, with
>>>>>>> the same behaviour. I am using the following maven artefacts:
>>>>>>>
>>>>>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>>>>>
>>>>>>> Maybe I am missing something?
>>>>>>>
>>>>>>> Thank you for any hint!
>>>>>>
>>>>>> Possibly an unexpected way in the system. Thats' what can cause
>>>>>> ARQ.getContext() to be null - Java class initialization madness.
>>>>>>
>>>>>> Do you have a complete, minimal example?
>>>>>>
>>>>>>>
>>>>>>> Enrico
>>>>>>>
>>>>>>>
>>>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>>>> parco.
>>
>
Re: Initializing TDB/JenaSystem properly
Posted by "Enrico Daga (enridaga)" <en...@gmail.com>.
Hi Andy,
Hi Andy,
The full stack trace is below.
I also prepared a stand alone project to reproduce the problem [1,2].
In this example, while the problem is still there (ARQ context being null), the point is different (this time in SystemTDB.java:381);
Best,
Enrico
[1] https://github.com/enridaga/jena-system-in-jetty-debug/
[2] https://github.com/enridaga/jena-system-in-jetty-debug/blob/master/src/main/java/enridaga/jenainjetty/Application.java
—
Enrico Daga (enridaga)
http://www.enridaga.net
Il budda e’ nel parco.
Stack trace in the original application:
2016-04-13 10:48:34 INFO Application:41 - Initializing context.
JenaSystem.init - start
InitTDB
Init: JenaInitLevel0
Init: InitTDB
TDB.init - start
2016-04-13 10:48:35 INFO ServerConnector:270 - Started ServerConnector@6356695f{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
Exception in thread "main" java.lang.ExceptionInInitializerError
at dkarobo.server.webapp.Application.contextInitialized(Application.java:56)
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:794)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:522)
at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:785)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:341)
at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1357)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1350)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:734)
at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:258)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:512)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)
at org.eclipse.jetty.server.Server.start(Server.java:405)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
at org.eclipse.jetty.server.Server.doStart(Server.java:372)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at dkarobo.server.cli.Main.main(Main.java:45)
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 org.apache.jena.system.JenaSystem$$Lambda$5/1615056168.accept(Unknown Source)
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.tdb.TDBFactory.<clinit>(TDBFactory.java:40)
... 18 more
> On 13 Apr 2016, at 10:04, Enrico Daga (enridaga) <en...@gmail.com> wrote:
>
> Thank you Andy,
> I’ll try that and let you know, eventually I will pack a thin maven project trying to reproduce the issue.
>
> Thanks a lot!
>
> Enrico
> —
> Enrico Daga (enridaga)
> http://www.enridaga.net
> Il budda e’ nel parco.
>
>
>
>
>
>> On 13 Apr 2016, at 09:59, Andy Seaborne <an...@apache.org> wrote:
>>
>> On 13/04/16 09:56, Andy Seaborne wrote:
>>> Hi Enrico,
>>>
>>> I was hoping to see the rest of the stack trace to see where the first
>>> entry point that causes initialization in Jena is happening.
>>>
>>> Do you have something I can build+run that is smaller? There are 4 maven
>>> modules there and 42 java files. There is an environmental factor here
>>> and I want to be runnign exactly what you are.
>>>
>>> A POM file, and code that is minimal (just Application? Does that fail?)
>>> would be helpful.
>>>
>>> Fuseki does:
>>>
>>> public void contextInitialized(ServletContextEvent sce) {
>>> JenaSystem.init() ;
>>>
>>>
>>> Andy
>>
>> PS As the first line in Application.contextInitialized
>>
>> try putting
>>
>> JenaSystem.DEBUG_INIT = true ;
>>
>> and see what comes out.
>>
>> Andy
>>
>>>
>>> On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
>>>> Hi Andy, thank you for you reply. You’re right, I was hoping it was
>>>> not a class loading issue and I simplified the question :)
>>>>
>>>> This happens within a ServletContextListener in a Jetty embedded
>>>> application [1]. In fact, I do not have any failure when I launch the
>>>> environment using mvn jetty:run, which I do during development. But
>>>> when I package the server, and I try to start it programmatically
>>>> [2], it fails as described in the previous email.
>>>>
>>>> However, if I force JenaSystem.init() in any way (included static
>>>> blocks in Application or Main), it still fails! I understand the app
>>>> class loader is different from the main one, but this consideration
>>>> alone does not help me much…
>>>>
>>>> Best, Enrico
>>>>
>>>>
>>>> [1]
>>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>>>>
>>>>
>>>>
>>> [2]
>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>>>
>>>>
>>>>
>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>> parco.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>>>>
>>>>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I want to use a TDB instance programmatically inside my
>>>>>> application, but I am having troubles on TDB initialisation.
>>>>>> Particularly, when I try to TDBFactory.create(…) I get a
>>>>>> NullPointerException as follows:
>>>>>>
>>>>>> 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 org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
>>> Source)
>>>>>> 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) […]
>>>>>
>>>>> What's the rest? In particular, what's causing the initialization
>>>>> process to start?
>>>>>
>>>>>>
>>>>>> The strange thing is that it looks like ARQ.getContext() returns
>>>>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>>>>> But then I see the call to JenaSystem.init() in a static block
>>>>>> inside the ARQ class, that is supposed to be at the bottom of the
>>>>>> above stack … Here I got confused.
>>>>>>
>>>>>> I also tried to force JenaSystem.init(); in my main class, with
>>>>>> the same behaviour. I am using the following maven artefacts:
>>>>>>
>>>>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>>>>
>>>>>> Maybe I am missing something?
>>>>>>
>>>>>> Thank you for any hint!
>>>>>
>>>>> Possibly an unexpected way in the system. Thats' what can cause
>>>>> ARQ.getContext() to be null - Java class initialization madness.
>>>>>
>>>>> Do you have a complete, minimal example?
>>>>>
>>>>>>
>>>>>> Enrico
>>>>>>
>>>>>>
>>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>>> parco.
>
Re: Initializing TDB/JenaSystem properly
Posted by "Enrico Daga (enridaga)" <en...@gmail.com>.
Thank you Andy,
I’ll try that and let you know, eventually I will pack a thin maven project trying to reproduce the issue.
Thanks a lot!
Enrico
—
Enrico Daga (enridaga)
http://www.enridaga.net <http://www.enridaga.net/>
Il budda e’ nel parco.
> On 13 Apr 2016, at 09:59, Andy Seaborne <an...@apache.org> wrote:
>
> On 13/04/16 09:56, Andy Seaborne wrote:
>> Hi Enrico,
>>
>> I was hoping to see the rest of the stack trace to see where the first
>> entry point that causes initialization in Jena is happening.
>>
>> Do you have something I can build+run that is smaller? There are 4 maven
>> modules there and 42 java files. There is an environmental factor here
>> and I want to be runnign exactly what you are.
>>
>> A POM file, and code that is minimal (just Application? Does that fail?)
>> would be helpful.
>>
>> Fuseki does:
>>
>> public void contextInitialized(ServletContextEvent sce) {
>> JenaSystem.init() ;
>>
>>
>> Andy
>
> PS As the first line in Application.contextInitialized
>
> try putting
>
> JenaSystem.DEBUG_INIT = true ;
>
> and see what comes out.
>
> Andy
>
>>
>> On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
>>> Hi Andy, thank you for you reply. You’re right, I was hoping it was
>>> not a class loading issue and I simplified the question :)
>>>
>>> This happens within a ServletContextListener in a Jetty embedded
>>> application [1]. In fact, I do not have any failure when I launch the
>>> environment using mvn jetty:run, which I do during development. But
>>> when I package the server, and I try to start it programmatically
>>> [2], it fails as described in the previous email.
>>>
>>> However, if I force JenaSystem.init() in any way (included static
>>> blocks in Application or Main), it still fails! I understand the app
>>> class loader is different from the main one, but this consideration
>>> alone does not help me much…
>>>
>>> Best, Enrico
>>>
>>>
>>> [1]
>>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>>>
>>>
>>>
>> [2]
>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>>
>>>
>>>
>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>> parco.
>>>
>>>
>>>
>>>
>>>
>>>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>>>
>>>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>>>> Hi,
>>>>>
>>>>> I want to use a TDB instance programmatically inside my
>>>>> application, but I am having troubles on TDB initialisation.
>>>>> Particularly, when I try to TDBFactory.create(…) I get a
>>>>> NullPointerException as follows:
>>>>>
>>>>> 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 org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
>> Source)
>>>>> 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) […]
>>>>
>>>> What's the rest? In particular, what's causing the initialization
>>>> process to start?
>>>>
>>>>>
>>>>> The strange thing is that it looks like ARQ.getContext() returns
>>>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>>>> But then I see the call to JenaSystem.init() in a static block
>>>>> inside the ARQ class, that is supposed to be at the bottom of the
>>>>> above stack … Here I got confused.
>>>>>
>>>>> I also tried to force JenaSystem.init(); in my main class, with
>>>>> the same behaviour. I am using the following maven artefacts:
>>>>>
>>>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>>>
>>>>> Maybe I am missing something?
>>>>>
>>>>> Thank you for any hint!
>>>>
>>>> Possibly an unexpected way in the system. Thats' what can cause
>>>> ARQ.getContext() to be null - Java class initialization madness.
>>>>
>>>> Do you have a complete, minimal example?
>>>>
>>>>>
>>>>> Enrico
>>>>>
>>>>>
>>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>>> parco.
Re: Initializing TDB/JenaSystem properly
Posted by Andy Seaborne <an...@apache.org>.
On 13/04/16 09:56, Andy Seaborne wrote:
> Hi Enrico,
>
> I was hoping to see the rest of the stack trace to see where the first
> entry point that causes initialization in Jena is happening.
>
> Do you have something I can build+run that is smaller? There are 4 maven
> modules there and 42 java files. There is an environmental factor here
> and I want to be runnign exactly what you are.
>
> A POM file, and code that is minimal (just Application? Does that fail?)
> would be helpful.
>
> Fuseki does:
>
> public void contextInitialized(ServletContextEvent sce) {
> JenaSystem.init() ;
>
>
> Andy
PS As the first line in Application.contextInitialized
try putting
JenaSystem.DEBUG_INIT = true ;
and see what comes out.
Andy
>
> On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
>> Hi Andy, thank you for you reply. You’re right, I was hoping it was
>> not a class loading issue and I simplified the question :)
>>
>> This happens within a ServletContextListener in a Jetty embedded
>> application [1]. In fact, I do not have any failure when I launch the
>> environment using mvn jetty:run, which I do during development. But
>> when I package the server, and I try to start it programmatically
>> [2], it fails as described in the previous email.
>>
>> However, if I force JenaSystem.init() in any way (included static
>> blocks in Application or Main), it still fails! I understand the app
>> class loader is different from the main one, but this consideration
>> alone does not help me much…
>>
>> Best, Enrico
>>
>>
>> [1]
>> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>>
>>
>>
> [2]
> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>
>>
>>
>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>> parco.
>>
>>
>>
>>
>>
>>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>>
>>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>>> Hi,
>>>>
>>>> I want to use a TDB instance programmatically inside my
>>>> application, but I am having troubles on TDB initialisation.
>>>> Particularly, when I try to TDBFactory.create(…) I get a
>>>> NullPointerException as follows:
>>>>
>>>> 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 org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
> Source)
>>>> 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) […]
>>>
>>> What's the rest? In particular, what's causing the initialization
>>> process to start?
>>>
>>>>
>>>> The strange thing is that it looks like ARQ.getContext() returns
>>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>>> But then I see the call to JenaSystem.init() in a static block
>>>> inside the ARQ class, that is supposed to be at the bottom of the
>>>> above stack … Here I got confused.
>>>>
>>>> I also tried to force JenaSystem.init(); in my main class, with
>>>> the same behaviour. I am using the following maven artefacts:
>>>>
>>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>>
>>>> Maybe I am missing something?
>>>>
>>>> Thank you for any hint!
>>>
>>> Possibly an unexpected way in the system. Thats' what can cause
>>> ARQ.getContext() to be null - Java class initialization madness.
>>>
>>> Do you have a complete, minimal example?
>>>
>>>>
>>>> Enrico
>>>>
>>>>
>>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>>> parco.
>>
>
Re: Initializing TDB/JenaSystem properly
Posted by Andy Seaborne <an...@apache.org>.
Hi Enrico,
I was hoping to see the rest of the stack trace to see where the first
entry point that causes initialization in Jena is happening.
Do you have something I can build+run that is smaller? There are 4 maven
modules there and 42 java files. There is an environmental factor here
and I want to be runnign exactly what you are.
A POM file, and code that is minimal (just Application? Does that fail?)
would be helpful.
Fuseki does:
public void contextInitialized(ServletContextEvent sce) {
JenaSystem.init() ;
Andy
On 12/04/16 18:44, Enrico Daga (enridaga) wrote:
> Hi Andy, thank you for you reply. You’re right, I was hoping it was
> not a class loading issue and I simplified the question :)
>
> This happens within a ServletContextListener in a Jetty embedded
> application [1]. In fact, I do not have any failure when I launch the
> environment using mvn jetty:run, which I do during development. But
> when I package the server, and I try to start it programmatically
> [2], it fails as described in the previous email.
>
> However, if I force JenaSystem.init() in any way (included static
> blocks in Application or Main), it still fails! I understand the app
> class loader is different from the main one, but this consideration
> alone does not help me much…
>
> Best, Enrico
>
>
> [1]
> https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
>
>
[2]
https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
>
>
> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
> parco.
>
>
>
>
>
>> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>>
>> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>>> Hi,
>>>
>>> I want to use a TDB instance programmatically inside my
>>> application, but I am having troubles on TDB initialisation.
>>> Particularly, when I try to TDBFactory.create(…) I get a
>>> NullPointerException as follows:
>>>
>>> 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 org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown
Source)
>>> 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) […]
>>
>> What's the rest? In particular, what's causing the initialization
>> process to start?
>>
>>>
>>> The strange thing is that it looks like ARQ.getContext() returns
>>> null in EnvTDB.java:33, meaning it still needs to be initialised.
>>> But then I see the call to JenaSystem.init() in a static block
>>> inside the ARQ class, that is supposed to be at the bottom of the
>>> above stack … Here I got confused.
>>>
>>> I also tried to force JenaSystem.init(); in my main class, with
>>> the same behaviour. I am using the following maven artefacts:
>>>
>>> jena-tdb:3.0.1 jena-core:3.0.1 jena-arq:3.0.1
>>>
>>> Maybe I am missing something?
>>>
>>> Thank you for any hint!
>>
>> Possibly an unexpected way in the system. Thats' what can cause
>> ARQ.getContext() to be null - Java class initialization madness.
>>
>> Do you have a complete, minimal example?
>>
>>>
>>> Enrico
>>>
>>>
>>> — Enrico Daga (enridaga) http://www.enridaga.net Il budda e’ nel
>>> parco.
>
Re: Initializing TDB/JenaSystem properly
Posted by "Enrico Daga (enridaga)" <en...@gmail.com>.
Hi Andy,
thank you for you reply.
You’re right, I was hoping it was not a class loading issue and I simplified the question :)
This happens within a ServletContextListener in a Jetty embedded application [1].
In fact, I do not have any failure when I launch the environment using mvn jetty:run, which I do during development.
But when I package the server, and I try to start it programmatically [2], it fails as described in the previous email.
However, if I force JenaSystem.init() in any way (included static blocks in Application or Main), it still fails!
I understand the app class loader is different from the main one, but this consideration alone does not help me much…
Best,
Enrico
[1] https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/webapp/Application.java
[2] https://github.com/enridaga/dka-robo/blob/master/server/src/main/java/dkarobo/server/cli/Main.java
—
Enrico Daga (enridaga)
http://www.enridaga.net
Il budda e’ nel parco.
> On 12 Apr 2016, at 18:16, Andy Seaborne <an...@apache.org> wrote:
>
> On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
>> Hi,
>>
>> I want to use a TDB instance programmatically inside my application, but I am having troubles on TDB initialisation.
>> Particularly, when I try to TDBFactory.create(…) I get a NullPointerException as follows:
>>
>> 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 org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown Source)
>> 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)
>> […]
>
> What's the rest? In particular, what's causing the initialization process to start?
>
>>
>> The strange thing is that it looks like ARQ.getContext() returns null in EnvTDB.java:33, meaning it still needs to be initialised. But then I see the call to JenaSystem.init() in a static block inside the ARQ class, that is supposed to be at the bottom of the above stack … Here I got confused.
>>
>> I also tried to force JenaSystem.init(); in my main class, with the same behaviour.
>> I am using the following maven artefacts:
>>
>> jena-tdb:3.0.1
>> jena-core:3.0.1
>> jena-arq:3.0.1
>>
>> Maybe I am missing something?
>>
>> Thank you for any hint!
>
> Possibly an unexpected way in the system. Thats' what can cause ARQ.getContext() to be null - Java class initialization madness.
>
> Do you have a complete, minimal example?
>
>>
>> Enrico
>>
>>
>> —
>> Enrico Daga (enridaga)
>> http://www.enridaga.net
>> Il budda e’ nel parco.
Re: Initializing TDB/JenaSystem properly
Posted by Andy Seaborne <an...@apache.org>.
On 12/04/16 17:22, Enrico Daga (enridaga) wrote:
> Hi,
>
> I want to use a TDB instance programmatically inside my application, but I am having troubles on TDB initialisation.
> Particularly, when I try to TDBFactory.create(…) I get a NullPointerException as follows:
>
> 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 org.apache.jena.system.JenaSystem$$Lambda$4/661672156.accept(Unknown Source)
> 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)
> […]
What's the rest? In particular, what's causing the initialization
process to start?
>
> The strange thing is that it looks like ARQ.getContext() returns null in EnvTDB.java:33, meaning it still needs to be initialised. But then I see the call to JenaSystem.init() in a static block inside the ARQ class, that is supposed to be at the bottom of the above stack … Here I got confused.
>
> I also tried to force JenaSystem.init(); in my main class, with the same behaviour.
> I am using the following maven artefacts:
>
> jena-tdb:3.0.1
> jena-core:3.0.1
> jena-arq:3.0.1
>
> Maybe I am missing something?
>
> Thank you for any hint!
Possibly an unexpected way in the system. Thats' what can cause
ARQ.getContext() to be null - Java class initialization madness.
Do you have a complete, minimal example?
>
> Enrico
>
>
> —
> Enrico Daga (enridaga)
> http://www.enridaga.net
> Il budda e’ nel parco.
>
>
>
>
>