代码之家  ›  专栏  ›  技术社区  ›  David Collie

com中的NullPointerException。太阳工具。jxc。计划任务

  •  4
  • David Collie  · 技术社区  · 16 年前

    考虑到这个蚂蚁脚本:

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="projectname" default="generate-schema" basedir=".">
    
        <taskdef name="schemagen" classname="com.sun.tools.jxc.SchemaGenTask">
            <classpath>
                <fileset dir="../BuildJars/lib" includes="*.jar" />
            </classpath>
        </taskdef>
    
        <target name="generate-schema">
            <schemagen srcdir="src/gb/informaticasystems/messages" destdir="schema">
                <schema namespace="http://www.informatica-systems.co.uk/aquarius/messages/1.0" file="messages-1.0.xsd" />
            </schemagen>
        </target>
    
    </project>
    

    我得到了这个错误:

    Buildfile: C:\Users\davidcollie\workspace\aquarius-feature\AquariusServerLibrary\schemagen.xml
    generate-schema:
    [schemagen] Generating schema from 4 source files
    [schemagen] Problem encountered during annotation processing; 
    [schemagen] see stacktrace below for more information.
    [schemagen] java.lang.NullPointerException
    [schemagen]     at com.sun.tools.jxc.model.nav.APTNavigator$2.onDeclaredType(APTNavigator.java:428)
    [schemagen]     at com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:402)
    [schemagen]     at com.sun.tools.jxc.model.nav.APTNavigator$2.onClassType(APTNavigator.java:456)
    [schemagen]     at com.sun.istack.tools.APTTypeVisitor.apply(APTTypeVisitor.java:27)
    [schemagen]     at com.sun.tools.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:109)
    [schemagen]     at com.sun.tools.jxc.model.nav.APTNavigator.getBaseClass(APTNavigator.java:85)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.getIndividualType(PropertyInfoImpl.java:190)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.PropertyInfoImpl.<init>(PropertyInfoImpl.java:132)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.MapPropertyInfoImpl.<init>(MapPropertyInfoImpl.java:67)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.createMapProperty(ClassInfoImpl.java:917)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.addProperty(ClassInfoImpl.java:874)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.findGetterSetterProperties(ClassInfoImpl.java:993)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.ClassInfoImpl.getProperties(ClassInfoImpl.java:303)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:243)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:209)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:315)
    [schemagen]     at com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:330)
    [schemagen]     at com.sun.tools.xjc.api.impl.j2s.JavaCompilerImpl.bind(JavaCompilerImpl.java:90)
    [schemagen]     at com.sun.tools.jxc.apt.SchemaGenerator$1.process(SchemaGenerator.java:115)
    [schemagen]     at com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(AnnotationProcessors.java:60)
    [schemagen]     at com.sun.tools.apt.comp.Apt.main(Apt.java:454)
    [schemagen]     at com.sun.tools.apt.main.JavaCompiler.compile(JavaCompiler.java:258)
    [schemagen]     at com.sun.tools.apt.main.Main.compile(Main.java:1102)
    [schemagen]     at com.sun.tools.apt.main.Main.compile(Main.java:964)
    [schemagen]     at com.sun.tools.apt.Main.processing(Main.java:95)
    [schemagen]     at com.sun.tools.apt.Main.process(Main.java:85)
    [schemagen]     at com.sun.tools.apt.Main.process(Main.java:67)
    [schemagen]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [schemagen]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [schemagen]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    [schemagen]     at java.lang.reflect.Method.invoke(Method.java:597)
    [schemagen]     at com.sun.tools.jxc.AptBasedTask$InternalAptAdapter.execute(AptBasedTask.java:97)
    [schemagen]     at com.sun.tools.jxc.AptBasedTask.compile(AptBasedTask.java:144)
    [schemagen]     at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:820)
    [schemagen]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    [schemagen]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [schemagen]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [schemagen]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    [schemagen]     at java.lang.reflect.Method.invoke(Method.java:597)
    [schemagen]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
    [schemagen]     at org.apache.tools.ant.Task.perform(Task.java:348)
    [schemagen]     at org.apache.tools.ant.Target.execute(Target.java:357)
    [schemagen]     at org.apache.tools.ant.Target.performTasks(Target.java:385)
    [schemagen]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
    [schemagen]     at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
    [schemagen]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    [schemagen]     at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
    [schemagen]     at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
    [schemagen]     at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
    [schemagen]     at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)
    
    BUILD FAILED
    C:\Users\davidcollie\workspace\aquarius-feature\AquariusServerLibrary\schemagen.xml:11: schema generation failed
    
    Total time: 1 second
    

    有什么想法吗?

    4 回复  |  直到 16 年前
        1
  •  3
  •   Stephen    16 年前

    我有这个问题,因为我的srcdir被设置为包含java文件的包文件夹。

    将其更改为顶级源文件夹更好,但schemagen想为所有人创建一个模式。源路径上的java文件(实际上只有20%是jaxb类)。

    我的最后一个蚂蚁电话看起来像:

    <property name="event.package" value="my/organisation/events"/>
    <schemagen srcdir="${src.main.java.dir}" 
        destdir="META-INF/event-schema" 
        classpathref="build.classpath">
        <include name="${event.package}/Event1.java"/>
        <include name="${event.package}/Event2.java"/>
    </schemagen>
    
        2
  •  0
  •   Rob Heiser    16 年前

    这个 <schemagen> 任务需要包含一个类路径,可能与 <javac> 毫无疑问,这个任务存在于你的蚂蚁脚本中的其他地方。我也在质疑 srcdir 属性它应该指向源代码树的顶部,而不是在任何包中。在我看来,“gb.informaticasystems.messages”可能是您项目中的一个包。如果是这样,您应该将属性更改为 srcdir="src" .因此,它应该是这样的(您需要提供类路径):

    <target name="generate-schema">
        <schemagen srcdir="src" destdir="schema">
            <schema namespace="http://www.informatica-systems.co.uk/aquarius/messages/1.0" file="messages-1.0.xsd" />
            <classpath>
               <!-- Classpath definition goes here -->
            </classpath>
        </schemagen>
    </target>
    
        3
  •  0
  •   David Collie    16 年前

    我从运行ant脚本的1.6版本切换到了1.5版本,这会导致抛出正确的堆栈跟踪,从那里我修复了这个问题。

        4
  •  0
  •   k_o_    11 年前

    此错误的原因很可能是缺少某些类,这些类在要从中创建架构的类中使用。 在我的例子中,我必须包含一些缺失的类,这些类不在我的第一组匹配通配符中。我使用了Maven,不得不从jaxb2 Maven插件版本1.6切换到1.5,当verbose设置为true时,会显示一些错误。后来我又换回了最新的版本。

                     <execution>
                        <phase>generate-resources</phase>
                        <id>rest-webservice-schemagen</id>
                        <goals>
                            <goal>schemagen</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <include>**/*DTO.java</include>
                                <include>**/*Type.java</include>
                                <include>**/*Status.java</include>
                            </includes>
                            <verbose>true</verbose>
                        </configuration>
                    </execution>
    
    推荐文章