使用 jaxb schemagen 创建 XSD

发布于 2024-10-05 04:47:25 字数 4680 浏览 0 评论 0原文

我正在学习 JAXb 2.0 并且是新手。

我正在尝试使用 schemagen 基于 y POJO 类生成 XSD,对于简单的类,它工作正常,但是当我的类包含对其他类的引用时,

schemagen 给我错误,下面是

注​​释处理期间遇到的相同问题的错误跟踪; 有关详细信息,请参阅下面的堆栈跟踪。

java.lang.NullPointerException
        at com.sun.tools.jxc.model.nav.APTNavigator$2.onDeclaredType(APTNavigator.java:436)
        at com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:410)
        at com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:464)
        at com.sun.istack.tools.APTTypeVisitor.apply(APTTypeVisitor.java:27)
        at com.sun.tools.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:113)
        at com.sun.tools.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:89)
        at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.getIndividualType(PropertyInfoImpl.java:195)
        at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.<init>(PropertyInfoImpl.java:137)
        at com.sun.xml.bind.v2.model.impl.MapPropertyInfoImpl.<init>(MapPropertyInfoImpl.java:71)
        at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.createMapProperty(ClassInfoImpl.java:928)
        at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.addProperty(ClassInfoImpl.java:885)
        at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.findGetterSetterProperties(ClassInfoImpl.java:1004)
        at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.getProperties(ClassInfoImpl.java:314)
        at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:247)
        at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:213)
        at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:319)
        at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:334)
        at com.sun.tools.xjc.api.impl.j2s.JavaCompilerImpl.bind(JavaCompilerImpl.java:94)
        at com.sun.tools.jxc.apt.SchemaGenerator$1.process(SchemaGenerator.java:119)
        at com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(AnnotationProcessors.java:60)
        at com.sun.tools.apt.comp.Apt.main(Apt.java:454)
        at com.sun.tools.apt.main.JavaCompiler.compile(JavaCompiler.java:258)
        at com.sun.tools.apt.main.Main.compile(Main.java:1102)
        at com.sun.tools.apt.main.Main.compile(Main.java:964)
        at com.sun.tools.apt.Main.processing(Main.java:95)
        at com.sun.tools.apt.Main.process(Main.java:85)
        at com.sun.tools.apt.Main.process(Main.java:67)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.sun.tools.jxc.SchemaGenerator$Runner.main(SchemaGenerator.java:245)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.sun.tools.jxc.SchemaGenerator.run(SchemaGenerator.java:177)
        at com.sun.tools.jxc.SchemaGenerator.run(SchemaGenerator.java:81)
        at com.sun.tools.jxc.SchemaGenerator.main(SchemaGenerator.java:73)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.sun.tools.jxc.SchemaGeneratorFacade.main(SchemaGeneratorFacade.java:60)
C:\Users\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\tr\model\destination\Destination.java:9: package com.tr.model.address does not exist
import com.tr.model.address.BasicAddress;[code]

下面是我的文件夹结构 schemagen 的详细信息

,它位于以下位置

C:\Users\Desktop\jaxb\jaxb-ri-20101119\bin

我试图生成 xsd 的 Java 类位于以下位置

C:\Users\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\tr\model\destination

Destination.java,

而从 Destination 引用的所有其他类以及类本身都是在以下结构中,

C:\Users\Raisonne\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\raisonne\tr\model

我知道问题出在类路径的设置上,但我无法弄清楚在这种情况下如何设置正确的类路径,

我尝试将系统的 CLASSPATH 变量设置为 的值,

C:\Users\Raisonne\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\raisonne\tr\model as well other 2 mentioned in my post but nothing worked out.

任何人都可以帮助我设置类路径模式生成。

提前致谢

乌梅什

i am learning JAXb 2.0 and is new to it.

i am trying to generate XSD based on y POJO classes using schemagen and for simple classes it working fine but when my class contains refrence to other classes

schemagen is giving me error below is the error trace for the same

Problem encountered during annotation processing;
see stacktrace below for more information.

java.lang.NullPointerException
        at com.sun.tools.jxc.model.nav.APTNavigator$2.onDeclaredType(APTNavigator.java:436)
        at com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:410)
        at com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:464)
        at com.sun.istack.tools.APTTypeVisitor.apply(APTTypeVisitor.java:27)
        at com.sun.tools.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:113)
        at com.sun.tools.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:89)
        at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.getIndividualType(PropertyInfoImpl.java:195)
        at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.<init>(PropertyInfoImpl.java:137)
        at com.sun.xml.bind.v2.model.impl.MapPropertyInfoImpl.<init>(MapPropertyInfoImpl.java:71)
        at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.createMapProperty(ClassInfoImpl.java:928)
        at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.addProperty(ClassInfoImpl.java:885)
        at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.findGetterSetterProperties(ClassInfoImpl.java:1004)
        at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.getProperties(ClassInfoImpl.java:314)
        at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:247)
        at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:213)
        at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:319)
        at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:334)
        at com.sun.tools.xjc.api.impl.j2s.JavaCompilerImpl.bind(JavaCompilerImpl.java:94)
        at com.sun.tools.jxc.apt.SchemaGenerator$1.process(SchemaGenerator.java:119)
        at com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(AnnotationProcessors.java:60)
        at com.sun.tools.apt.comp.Apt.main(Apt.java:454)
        at com.sun.tools.apt.main.JavaCompiler.compile(JavaCompiler.java:258)
        at com.sun.tools.apt.main.Main.compile(Main.java:1102)
        at com.sun.tools.apt.main.Main.compile(Main.java:964)
        at com.sun.tools.apt.Main.processing(Main.java:95)
        at com.sun.tools.apt.Main.process(Main.java:85)
        at com.sun.tools.apt.Main.process(Main.java:67)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.sun.tools.jxc.SchemaGenerator$Runner.main(SchemaGenerator.java:245)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.sun.tools.jxc.SchemaGenerator.run(SchemaGenerator.java:177)
        at com.sun.tools.jxc.SchemaGenerator.run(SchemaGenerator.java:81)
        at com.sun.tools.jxc.SchemaGenerator.main(SchemaGenerator.java:73)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.sun.tools.jxc.SchemaGeneratorFacade.main(SchemaGeneratorFacade.java:60)
C:\Users\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\tr\model\destination\Destination.java:9: package com.tr.model.address does not exist
import com.tr.model.address.BasicAddress;[code]

below is the detail of my folder structure

schemagen is located at the following location

C:\Users\Desktop\jaxb\jaxb-ri-20101119\bin

My Java class based on which i am trying to generate xsd is at the following location

C:\Users\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\tr\model\destination

Destination.java

while all other classes being refrenced from Destination as well as the class itself are inside the following structure

C:\Users\Raisonne\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\raisonne\tr\model

i know the problem is with the setting of classpath but i am unable to figure it out ho to set correct classpath for this case

i tried to set system's CLASSPATH variable to the value of

C:\Users\Raisonne\Desktop\jaxb\jaxb-ri-20101119\bin\src\com\raisonne\tr\model as well other 2 mentioned in my post but nothing worked out.

can any one help me in setting classpath for the schemagen.

thanks in advance

Umesh

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫性小仙女 2024-10-12 04:47:25

看来您已将类的包声明设置为

com.tr.model.address  

目录结构中应有的位置

com.tr.model.destination

it seems you have set package declaration of your class to

com.tr.model.address  

where it should be from your dir structure

com.tr.model.destination
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文