Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XJC NullPointerException仅在Java中使用>;7u40_Java_Jaxb_Java 7_Xjc - Fatal编程技术网

XJC NullPointerException仅在Java中使用>;7u40

XJC NullPointerException仅在Java中使用>;7u40,java,jaxb,java-7,xjc,Java,Jaxb,Java 7,Xjc,我运行以下命令 exec/usr/java/jdk1.7.0_45/bin/java-jar jaxb-xjc.jar TestPolicy.xsd 并引发以下异常: Exception in thread "main" java.lang.NullPointerException at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.setProperty(XMLDocumentFragmentSca

我运行以下命令

exec/usr/java/jdk1.7.0_45/bin/java-jar jaxb-xjc.jar TestPolicy.xsd

并引发以下异常:

Exception in thread "main" java.lang.NullPointerException
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.setProperty(XMLDocumentFragmentScannerImpl.java:776)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.setProperty(XMLDocumentScannerImpl.java:448)
at com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.setProperty(SchemaParsingConfig.java:492)
at com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaDOMParser.setProperty(SchemaDOMParser.java:503)
at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reset(XSDHandler.java:3594)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.reset(XMLSchemaLoader.java:1068)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:561)
at com.sun.org.apache.xerces.internal.parsers.XMLGrammarPreparser.preparseGrammar(XMLGrammarPreparser.java:205)
at com.sun.tools.xjc.reader.xmlschema.parser.SchemaConstraintChecker.check(SchemaConstraintChecker.java:78)
at com.sun.tools.xjc.GrammarLoader.loadXMLSchema(GrammarLoader.java:330)
at com.sun.tools.xjc.GrammarLoader.load(GrammarLoader.java:127)
at com.sun.tools.xjc.GrammarLoader.load(GrammarLoader.java:76)
at com.sun.tools.xjc.Driver.run(Driver.java:181)
at com.sun.tools.xjc.Driver._main(Driver.java:80)
at com.sun.tools.xjc.Driver.access$000(Driver.java:46)
at com.sun.tools.xjc.Driver$1.run(Driver.java:60)
如果使用jdk1.7.0_25运行相同的命令,则不会出现异常,所有操作都会成功运行

知道1.7更新25和1.7更新40或更新45版本之间的区别吗

注意:我发现以下两个链接看起来很相似。一个是openjdk的bug,但在JavaSun网站上似乎没有输入bug。 及

解决方法:我有类似的问题(即给予NPE),但从ant任务中调用它。我没有使用单独的jaxb-xjc.jar(from),而是决定使用JDK1.7附带的xjc.exe(在bin下),它的工作方式很有魅力

在windows中:

%JAVA_HOME%/bin/xjc.exe/

如果出于某些原因,您必须使用该库,请确保您获得了JDK1.7使用的最新版本(截至本文撰写时为2.2.7)


希望这能有所帮助。

我找到了一个对我来说“足够好”的解决方案,我需要jaxb1,所以更换xjc是不可能的

从GrammarLoader源:

        if(opt.strictCheck && !SchemaConstraintChecker.check(opt.getGrammars(), errorReceiver, opt.entityResolver))
从Options.java源代码:

       if(args[i].equals("-nv"))
    {
        strictCheck = false;
        return 1;
    }
从命令行参数文档

    -nv                :  do not perform strict validation of the input schema(s)
=>使用

<xjc .../>
  <arg value="-nv" />
</xjc>


禁用SchemaConstraintChecker.check(…),这会导致NPE

是,这确实有帮助,但新库中的xjc对my xsd的反应似乎与旧xjc不同。所以这对我来说仍然是个问题。删除SchemaConstraintChecker.check()是否可取?我想这取决于您的项目。在我的例子中,我从另一个项目中获得模式,我可以相信它们是有效的。也许如果您在xjc/jaxb1中禁用严格检查,您可以从另一个工具进行一些手动检查。