4


1

com.sun.tools.jxc.SchemaGenTaskのNullPointerException

このantスクリプトがある場合:


私はこのエラーを受けています:

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.(PropertyInfoImpl.java:132)
[schemagen]     at com.sun.xml.bind.v2.model.impl.MapPropertyInfoImpl.(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 Answer


3


この問題は、srcdirがjavaファイルを含むパッケージフォルダーに設定されていたために発生しました。

これを最上位のソースフォルダーに変更するほうが良いのですが、schemagenはソースパス上のすべての.javaファイルのスキーマを作成したかったのです(実際にはjaxbクラスは20%だけでした)。

私の最後のアリの呼び出しは次のようになります:



0


タスクにはクラスパスを含める必要があります。クラスパスは、おそらく、Antスクリプト内のどこかにあるタスクにあるものと同等です。 また、 `srcdir`属性の値についても質問しています。 パッケージ内ではなく、ソースツリーの最上部を指す必要があります。 「gb.informaticasystems.messages」がプロジェクトのパッケージであるように思えます。 その場合、属性を `srcdir =" src "`に変更する必要があります。 したがって、次のようになります(クラスパスを指定する必要があります)。



0


antスクリプトの実行を1.6から1.5に切り替えたところ、適切なスタックトレースがスローされ、そこから問題を修正しました。


0


このエラーの理由は、スキーマの作成元のクラスで使用されているいくつかのクラスが欠落していることです。 私の場合、一致するワイルドカードの最初のセットにないいくつかの欠落クラスを含める必要がありました。 私はMavenを使用しており、jaxb2-maven-pluginバージョン1.6から1.5に切り替える必要がありました。これは、verboseがtrueに設定されている場合にエラーを表示します。 その後、最新バージョンに切り替えました。

                    generate-resources
                    rest-webservice-schemagen

                        schemagen



                            **/*DTO.java
                            **/*Type.java
                            **/*Status.java

                        true