JAXB与JDK7问题 - com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:1计数IllegalAnnotationExceptions

时间:2014-08-26 20:33:53

标签: java xml jaxb

我有一个JAXB编组代码,可以在Java 1.6中运行一个对象。但是当我使用Java 1.7 Runtime运行时,我收到以下错误。以下是错误。在较高的层面上,JAXB是否存在Java 1.7问题。请指教

com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
java.util.List is an interface, and JAXB can't handle interfaces.
       this problem is related to the following location:
              at java.util.List
              at protected com.models.util.ServiceMap com.models.MessageEvent.serviceMap
              at com.models.MessageEvent

       at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91)
       at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:451)
       at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:283)
       at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:126)
       at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1148)
       at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:130)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:601)
       at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:248)
       at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:235)
       at javax.xml.bind.ContextFinder.find(ContextFinder.java:445)
       at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:637)
       at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)

1 个答案:

答案 0 :(得分:0)

以某种方式看起来非常棘手。这个问题在前一段时间得到解决,解决方案是下面的jaxb jar没有被添加到构建类路径中,因为maven依赖jar的范围被赋予“提供”并且范围标记被删除,默认为“编译”。

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.1</version>
        <!-- <scope>provided</scope> -->
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.1.5</version>
        <!-- <scope>provided</scope> -->
    </dependency>