Compatibility with Oracle JDK 10

Hi,

I’m currently trying to launch the last version of the Stardog Server (5.3.3) on the Oracle Java JDK 10 VM.

java -version output:
java version “10.0.2” 2018-07-17
Java™ SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot™ 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)

I got several errors and the following stacktrace:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$2 (file:/home/ciaps/java/stardog-5.3.3/client/api/guice-4.0.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$2
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
WARN  2018-08-02 16:44:02,136 [main] com.complexible.common.memory.PlatformDependent:<init>(144): sun.misc.VM is not available
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
    at com.complexible.common.rdf.model.AbstractStardogIntLiteral.<init>(AbstractStardogIntLiteral.java:24)
    at com.complexible.common.rdf.model.StardogIntLiteral.<init>(StardogIntLiteral.java:17)
    at com.complexible.common.rdf.model.StardogValueFactory.createLiteral(StardogValueFactory.java:428)
    at com.complexible.common.rdf.model.Values.literal(Values.java:95)
    at com.complexible.stardog.plan.filter.functions.numeric.RoundHalfToEven.<clinit>(RoundHalfToEven.java:35)
    at com.complexible.stardog.plan.filter.functions.numeric.RoundHalfToEven$$FastClassByGuice$$adc393f4.newInstance(<generated>)
    at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40)
    at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
    at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
    at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
    at com.google.common.collect.Iterators$8.transform(Iterators.java:799)
    at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
    at com.google.common.collect.Iterators$5.next(Iterators.java:558)
    at com.complexible.stardog.plan.filter.functions.FunctionRegistry$1.<init>(FunctionRegistry.java:67)
    at com.complexible.stardog.plan.filter.functions.FunctionRegistry.<clinit>(FunctionRegistry.java:36)
    at com.complexible.stardog.plan.Plans.<clinit>(Plans.java:53)
    at com.complexible.stardog.plan.PlanContext$PlanContextBuilder.<init>(PlanContext.java:148)
    at com.complexible.stardog.plan.PlanContext$PlanContextBuilder.<init>(PlanContext.java:135)
    at com.complexible.stardog.plan.PlanContext.builder(PlanContext.java:125)
    at com.complexible.stardog.plan.PlanContext.<clinit>(PlanContext.java:37)
    at com.complexible.stardog.plan.eval.QueryEngine.planFor(QueryEngine.java:248)
    at com.complexible.stardog.plan.eval.QueryEngine.getExecutablePlan(QueryEngine.java:331)
    at com.complexible.stardog.plan.eval.QueryEngine.getExecutablePlan(QueryEngine.java:279)
    at com.complexible.stardog.plan.eval.QueryEngine.executeSelect(QueryEngine.java:215)
    at com.complexible.stardog.query.DefaultQueryFactory$TupleQuery.execute(DefaultQueryFactory.java:204)
    at com.complexible.stardog.query.DefaultQueryFactory$TupleQuery.execute(DefaultQueryFactory.java:190)
    at com.complexible.stardog.security.impl.IndexBasedExistingSecurityResourcesLoader.usersMap(IndexBasedExistingSecurityResourcesLoader.java:53)
    at com.complexible.stardog.security.impl.AbstractExistingSecurityResourcesLoader.load(AbstractExistingSecurityResourcesLoader.java:102)
    at com.complexible.stardog.security.impl.AbstractExistingSecurityResourcesLoader.existingUsers(AbstractExistingSecurityResourcesLoader.java:139)
    at com.complexible.stardog.security.index.IndexAuthenticationManager.refresh(IndexAuthenticationManager.java:108)
    at com.complexible.stardog.security.index.IndexAuthenticationManager.<init>(IndexAuthenticationManager.java:76)
    at com.complexible.stardog.security.index.IndexBackedSystemSecurityManager.<init>(IndexBackedSystemSecurityManager.java:66)
    at com.complexible.stardog.security.index.IndexSystemSecurityManagerFactory.create(IndexSystemSecurityManagerFactory.java:65)
    at com.complexible.stardog.BaseStardogModule.getSystemSecurityManager(BaseStardogModule.java:200)
    at com.complexible.stardog.BaseStardogModule$$FastClassByGuice$$920e5968.invoke(<generated>)
    at com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:272)
    at com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:172)
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
    at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
    at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
    at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:375)
    at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:258)
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
    at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
    at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
    at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:104)
    at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:104)
    at com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:167)
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
    at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
    at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
    at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
    at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
    at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
    at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
    at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
    at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
    at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
    at com.complexible.stardog.Stardog.initKernel(Stardog.java:213)
    at com.complexible.stardog.Stardog.<init>(Stardog.java:206)
    at com.complexible.stardog.Stardog.<init>(Stardog.java:60)
    at com.complexible.stardog.Stardog$StardogBuilder.create(Stardog.java:597)
    at com.complexible.stardog.cli.impl.ServerStart.call(ServerStart.java:162)
    at com.complexible.stardog.cli.impl.ServerStart.call(ServerStart.java:41)
    at com.complexible.stardog.cli.CLIBase.execute(CLIBase.java:55)
    at com.complexible.stardog.cli.admin.CLI.main(CLI.java:186)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    ... 109 more

I know that from JDK 9 onwards tools.jar and the JAX-B library are missing in the standard Java SE distribution.

Can anyone help solving this issue?

Thanks Andrea

Hi Andrea,

As stated in our requirements, Stardog only works with Java 8. Newer versions of Java will be supported in a near future.