是否有可能在Java JRE 1.6 SE中替换JAXB实现的版本?

Bet*_*sta 10 java jaxb

我有这个测试课

import javax.xml.bind.annotation.XmlElement;

class CompileTest {

   void foo( @XmlElement String in ) {
   }

}
Run Code Online (Sandbox Code Playgroud)

我的java版本是

$ java -version
java version "1.6.0_23"
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Java HotSpot(TM) Client VM (build 19.0-b09, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

当我尝试编写那个我正在学习的课程时

javac CompileTest.java
CompileTest.java:5: annotation type not applicable to this kind of declaration
   void foo( @XmlElement String in ) {
             ^
1 error
Run Code Online (Sandbox Code Playgroud)

这对Java 6有效.当我尝试将更新的JAXB库添加到类路径时,它没有帮助.有办法解决这个问题吗?

javac -cp jaxb-api-2.2.4.jar CompileTest.java
Run Code Online (Sandbox Code Playgroud)

Rav*_*yal 11

使用Java认可的标准覆盖机制

把你的jaxb-api-2.2.4.jar内部<java-home>\lib\endorsed目录.

或者,使用-D java.endorsed.dirs选项

javac -Djava.endorsed.dirs=/your/path/to/jaxb-directory CompileTest.java

参考文献:http:
//docs.oracle.com/javase/6/docs/technotes/guides/standards/