我是JAXB的新手,我想整理和解组XML / Objects to Objects / XML。
我从(价值22.69 MB)Sun的网站下载了JWSDP 2.0 。
我已将环境变量设置为
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(存在于D:\Sun\jwsdp-2.0\jaxb\bin
中)编译一个简单的XSD文件(名为tp.xsd)。
当我尝试编译它时,我得到以下输出:
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)
答案 0 :(得分:5)
jaxb库包含在java 1.6中。如果添加jar,你会得到各种疯狂的类加载器错误。
在这种情况下,看起来xjc选择了错误的jar版本。
xjc应该捆绑在JDK中,在你的帖子中你使用的是jabx独立包中的xjc。转到安装java 1.6的文件夹,检查是否有xjc.exe或xjc.bat并从该文件夹运行它。 和上面提到的Robert一样,请确保您使用的是Java 1.6
答案 1 :(得分:0)
这是原帖的补充答案。评论部分的问题是:
(但我的系统正在定期更新java,所以为什么不下载java 1.6中的最新内容而不是java 1.5中的原因?为什么我的系统说我正在运行java 1.6,如图所示我的问题??)
键入" java -version"在命令提示符下,Windows使用PATH环境变量解析它。有多个位置可以找到 java.exe 文件。显而易见的是下载的JRE的位置(即C:\ Program Files(x86)\ Java [SOME JRE])。另一个不那么明显的位置是Windows' System32文件夹。我还发现我的Windows 8机器在C:\ ProgramData \ Oracle \ Java \ javapath下有一个java.exe快捷方式。关键是java.exe(或快捷方式)可以驻留的路径很多。在PATH中遇到的第一个胜出。
如果您希望使用特定版本的java来执行开发环境之外的程序,则必须将该位置作为PATH中的第一个条目(以确保它首先找到该位置)。