如何让EclipseLink 2.6.0-m3与Jersey 1.18.3一起使用

时间:2015-02-17 18:09:40

标签: eclipselink moxy

使用泽西moxy时

    <!--  Jersey moxy -->
    <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-moxy</artifactId> 
        <version>1.18.3</version> 
        <scope>provided</scope>
    </dependency>

与eclipse链接2.6.0-M3一起

    <!-- Eclipse Link persistence -->
    <dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <!-- <version>2.4.2-RC1</version> -->
        <!-- <version>2.5.1-RC3</version> -->
        <!-- <version>2.5.1</version> -->
        <!-- <version>2.5.2-M1</version> -->
        <!-- <version>2.5.2</version> -->
        <version>2.6.0-M3</version>
        <exclusions>
            <exclusion>
                <artifactId>commonj.sdo</artifactId>
                <groupId>commonj.sdo</groupId>
            </exclusion>
        </exclusions>
    </dependency>

我得到了

java.lang.NoClassDefFoundError: javax/validation/ConstraintViolationException
    at org.eclipse.persistence.jaxb.JAXBMarshaller.<init>(JAXBMarshaller.java:102)
    at org.eclipse.persistence.jaxb.JAXBContext$JAXBContextState.createMarshaller(JAXBContext.java:1527)
    at org.eclipse.persistence.jaxb.JAXBContext.createMarshaller(JAXBContext.java:385)
    at org.eclipse.persistence.jaxb.JAXBContext.createMarshaller(JAXBContext.java:1)

我试图通过改变我的pom.xml中的顺序来解决这个问题 适用于我的一些项目。在嵌套环境中,某些项目依赖于另一个项目,问题再次出现。

http://dev.eclipse.org/mhonarc/lists/eclipselink-users/msg08372.html 建议依赖可能会丢失,所以我补充说:

   <!--  
    http://dev.eclipse.org/mhonarc/lists/eclipselink-users/msg08372.html
    http://mvnrepository.com/artifact/javax.validation/validation-api/1.1.0.Final 
    -->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
    </dependency>

eclipselink依赖项出现的位置。这似乎也有帮助。

这真的是个错误吗?什么是解决这个问题的“正确”方法?

不幸的是,我没有选择将Jersey升级到2.x,因为有太多的不兼容性和(我听到)错误。

1 个答案:

答案 0 :(得分:2)

解决此问题的正确方法是添加javax.validation:validation-api依赖项。

Bean验证是EclipseLink 2.6.0中的新功能,如Design Doc https://bugs.eclipse.org/bugs/attachment.cgi?id=241506

中所述

结果是,现在需要依赖。

我已经针对EclipseLink提交了新的增强请求,以使此依赖项可选。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=460330