JAXB jar文件与java 1.6.0不兼容?

JAXB jar文件与java 1.6.0不兼容?,jaxb,Jaxb,我是JAXB新手,我想将XML/Objects封送和取消封送到Objects/XML 我已经从Sun的网站下载了JWSDP 2.0(价值22.69 MB) 我已将环境变量设置为 JAVA_HOME :- D:\Program Files\Java\jdk1.5.0 JWSDP_HOME :- D:\Sun\jwsdp-2.0 JAXB_HOME :- D:\Sun\jwsdp-2.0\jaxb PATH :- D:\Program Files\Java\jdk1.5.0\bi

我是JAXB新手,我想将XML/Objects封送和取消封送到Objects/XML

我已经从Sun的网站下载了JWSDP 2.0(价值22.69 MB)

我已将环境变量设置为

JAVA_HOME :-   D:\Program Files\Java\jdk1.5.0  
JWSDP_HOME :-   D:\Sun\jwsdp-2.0  
JAXB_HOME :- D:\Sun\jwsdp-2.0\jaxb  
PATH :- D:\Program Files\Java\jdk1.5.0\bin;D:\Sun\jwsdp-2.0\jwsdp-shared\bin;  
我正在尝试使用XJC编译一个简单的XSD文件(名为tp.XSD)(它出现在
D:\Sun\jwsdp-2.0\jaxb\bin
中)

当我试图编译它时,我得到以下输出:

D:\Sun\jwsdp-2.0\jaxb\bin>xjc-tp.xsd

parsing a schema...  
compiling a schema...  
generated\Bookdata.java  
Exception in thread "main" java.lang.NoSuchMethodError: java.lang.Class.getSimpl
eName()Ljava/lang/String;  
        at com.sun.codemodel.JCodeModel$JReferencedClass.name(JCodeModel.java:54
5)  
        at com.sun.codemodel.JFormatter.t(JFormatter.java:283)  
        at com.sun.codemodel.JClass.generate(JClass.java:358)  
        at com.sun.codemodel.JFormatter.g(JFormatter.java:346)  
        at com.sun.codemodel.JAnnotationUse.generate(JAnnotationUse.java:388)  
        at com.sun.codemodel.JFormatter.g(JFormatter.java:346)  
        at com.sun.codemodel.JDefinedClass.declare(JDefinedClass.java:767)  
        at com.sun.codemodel.JFormatter.d(JFormatter.java:372)   
        at com.sun.codemodel.JFormatter.write(JFormatter.java:402)  
        at com.sun.codemodel.JPackage.build(JPackage.java:434)  
        at com.sun.codemodel.JCodeModel.build(JCodeModel.java:297)  
        at com.sun.codemodel.JCodeModel.build(JCodeModel.java:287)  
        at com.sun.tools.xjc.Driver.run(Driver.java:378)  
        at com.sun.tools.xjc.Driver.run(Driver.java:196)  
        at com.sun.tools.xjc.Driver._main(Driver.java:121)  
        at com.sun.tools.xjc.Driver.access$000(Driver.java:79)  
        at com.sun.tools.xjc.Driver$1.run(Driver.java:101)  
你能帮我找到解决办法吗?我知道这个错误

Exception in thread "main" java.lang.NoSuchMethodError: java.lang.Class.getSimpl eName()Ljava/lang/String;   
由于编译器和类文件不兼容而发生,但我不知道该怎么办

当我运行java-version命令时,它显示:

C:\Documents and Settings\welcome>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)  

jaxb库包含在Java1.6中。如果你也添加了jar,你会得到各种疯狂的类加载器错误

在本例中,看起来xjc选择了错误的jar版本

编辑 xjc应该捆绑在JDK中,在您的帖子中,您使用的是jabx独立包中的xjc。转到安装java 1.6的文件夹,检查是否有xjc.exe或xjc.bat,然后从该文件夹运行它。
就像上面提到的Robert一样,请确保您使用的是Java1.6,这是对原始帖子的补充回答。评论部分的问题是:

(但我的系统定期更新java,为什么它不下载java 1.6中的最新内容,而不是java 1.5中的内容???为什么我的系统说我正在运行java 1.6,如我的问题所示??)

在命令提示符下键入“java-version”时,Windows将使用PATH环境变量解析它。有多个位置可以找到java.exe文件。显而易见的一点是下载的JRE的位置(即C:\ProgramFiles(x86)\Java[SOME JRE])。另一个不太明显的位置是Windows的System32文件夹。我还发现我的Windows 8机器在C:\ProgramData\Oracle\java\javapath下有一个java.exe快捷方式。关键是java.exe(或快捷方式)可以驻留在许多路径中。在路径中最先遇到的人获胜


如果您希望使用特定版本的java在您的开发环境之外执行程序,则必须将该位置作为路径中的第一个条目(以确保它首先找到该位置)。

Thnx用于回答…但我不知道哪个是解决方案的一部分??我应该怎么做才能使xsd文件成功编译???吨thnx到u frnd…它工作了..我下载了java 6完整的新包并安装了…它包含xjc并尝试运行它。。。(但我的系统定期更新java,所以为什么它不下载java 1.6中的最新内容,而不是java 1.5???为什么我的系统说我正在运行java 1.6,如我的问题所示???)在你的帖子主题中,你指的是java 1.6,但在你的帖子中,显然你在使用JDK 1.5。您应该切换到最新的JDK1.6版本。