> So I guess it's really a classpath issue,
JsonLdOptions does not call SystemDefaultHttpClient (0.11.1).
Maybe it did at the version for Jena 3.0.1.
Andy
On 03/12/17 19:46, Martynas Jusevičius wrote:
Follows below.
Forgot to mention one important thing :) I'm excluding Apache HTTP Client
from Jena:
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>jena-arq</artifactId>
<version>3.0.1</version>
<!-- excluding HTTP Client as we are using Jersey Client
instead -->
<exclusions>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient-cache</artifactId>
</exclusion>
</exclusions>
</dependency>
So I guess it's really a classpath issue, not specific to Jena: Jersey
client wraps a different AHC version than Jena/jsonld-java does.
But if JsonLdOptions would not call it, I think it wouldn't be a problem?
The stacktrace:
Exception occurred in target VM:
org/apache/http/impl/client/SystemDefaultHttpClient
java.lang.NoClassDefFoundError:
org/apache/http/impl/client/SystemDefaultHttpClient
at com.github.jsonldjava.core.JsonLdOptions.<init>(JsonLdOptions.java:52)
at org.apache.jena.riot.out.JsonLDWriter.serialize(JsonLDWriter.java:87)
at org.apache.jena.riot.out.JsonLDWriter.write(JsonLDWriter.java:67)
at org.apache.jena.riot.out.JsonLDWriter.write(JsonLDWriter.java:77)
at org.apache.jena.riot.system.RiotLib$WriterAdapter.write(RiotLib.java:333)
at org.apache.jena.riot.adapters.RDFWriterRIOT.write(RDFWriterRIOT.java:94)
at org.apache.jena.rdf.model.impl.ModelCom.write(ModelCom.java:355)
at com.atomgraph.core.io.ModelProvider.write(ModelProvider.java:153)
at
com.atomgraph.platform.server.io.SkolemizingModelProvider.write(SkolemizingModelProvider.java:85)
at
com.atomgraph.server.io.BasedModelProvider.writeTo(BasedModelProvider.java:83)
at
com.atomgraph.server.io.BasedModelProvider.writeTo(BasedModelProvider.java:43)
at
com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:302)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
at
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:616)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException:
org.apache.http.impl.client.SystemDefaultHttpClient
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
... 40 more
On Sun, Dec 3, 2017 at 7:40 PM, ajs6f <[email protected]> wrote:
Can you give a complete stack trace?
ajs6f
On Dec 3, 2017, at 1:27 PM, Martynas Jusevičius <[email protected]>
wrote:
Hi,
I have noticed that after I upgraded to Jena 3.0.1 some time ago, JSON-LD
writer stopped working. This is due to
Exception occurred in target VM:
org/apache/http/impl/client/SystemDefaultHttpClient
java.lang.NoClassDefFoundError:
org/apache/http/impl/client/SystemDefaultHttpClient
at com.github.jsonldjava.core.JsonLdOptions.<init>(
JsonLdOptions.java:52)
in JsonLDWriter.serialize().
I had replaced all Jena's Apache Client usages with Jersey client, so
this
was an unpleasant surprise.
Why would a writer make HTTP calls? I guess it attempts to load some
@context or something, but this does not make sense when writing?
I know jsonld-java is a 3rd party library, so I guess my options to
disable
the HTTP call are limited? Would a newer version make it possible?
Martynas