marie
marie

Reputation: 507

Jersey 2.27, spring 5.0.7.RELEASE and Java 10 compliance issue

I think I have a compliance issue. I am getting this exception:

org.glassfish.jersey.server.ContainerException: java.lang.ExceptionInInitializerError] with root cause java.lang.NullPointerException
at org.eclipse.persistence.indirection.IndirectCollectionsFactory.getProvider(IndirectCollectionsFactory.java:202)
at org.eclipse.persistence.indirection.IndirectCollectionsFactory.<clinit>(IndirectCollectionsFactory.java:45)
at org.eclipse.persistence.internal.helper.ClassConstants.<clinit>(ClassConstants.java:64)
at org.eclipse.persistence.internal.identitymaps.AbstractIdentityMap.getDefaultIdentityMapClass(AbstractIdentityMap.java:339)
at org.eclipse.persistence.sessions.Project.<init>(Project.java:109)
at org.eclipse.persistence.jaxb.compiler.MappingsGenerator.generateProject(MappingsGenerator.java:230)
at org.eclipse.persistence.jaxb.compiler.Generator.generateProject(Generator.java:186)
at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1140)
at org.eclipse.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1132)
at org.eclipse.persistence.jaxb.JAXBContext.<init>(JAXBContext.java:193)
at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:165)
at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:152)
at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:112)
at org.eclipse.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:102)
at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.getJAXBContext(MOXyJsonProvider.java:325)
at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.getJAXBContext(MOXyJsonProvider.java:345)
at org.eclipse.persistence.jaxb.rs.MOXyJsonProvider.isReadable(MOXyJsonProvider.java:470)
at org.glassfish.jersey.moxy.json.internal.ConfigurableMoxyJsonProvider.isReadable(ConfigurableMoxyJsonProvider.java:189)

The nullpointer is here:

//try this on JDK 8+ only (see bug 464096)
if (!useJ2SE7IndirectCollections && JavaSEPlatform.CURRENT.atLeast(JavaSEPlatform.v1_8)) {

because JavaSEPlatform.CURRENT is null with Java 10 (see the enum below):

/** Java SE 1.1. */
v1_1(1,1),
/** Java SE 1.2. */
v1_2(1,2),
/** Java SE 1.3. */
v1_3(1,3),
/** Java SE 1.4. */
v1_4(1,4),
/** Java SE 1.5. */
v1_5(1,5),
/** Java SE 1.6. */
v1_6(1,6),
/** Java SE 1.7. */
v1_7(1,7),
/** Java SE 1.8. */
v1_8(1,8),
/** Java SE 9. */
v1_9(1,9),
/** Java SE 9. */
v9_0(9, 0);

Can someone confirm that this is a bug? I cannot report the bug as this https://github.com/jersey/jersey/issues is read-only. What fix can I apply (except downgrading to java 9)?

Thanks for replies.

Edit Jersey version is 2.27, not 2.17 as I first wrote

Upvotes: 3

Views: 1946

Answers (1)

marie
marie

Reputation: 507

As suggested in the repo, I updated the pom.xml file with the following dependencies:

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
        <version>${jersey-version}</version>
        <exclusions>
            <!-- Not Java 10 compliant -->
            <exclusion>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>org.eclipse.persistence.moxy</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.moxy</artifactId>
        <version>2.7.2</version>
    </dependency>
</dependencies>

and the npe disappeared

Upvotes: 1

Related Questions