当前位置: 首页 > 知识库问答 >
问题:

使用jaxb2-annotate-plugin和XJC工具定制注释

邢飞雨
2023-03-14

为了进行测试,我在模式中添加了以下内容,

<xs:schema xmlns:aa="http://acme.example.com/system" 
           xmlns:another="http://acme.example.com/another" 
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
           xmlns:ncn="urn:ietf:params:xml:ns:netconf:notification:1.0" 
           jaxb:extensionBindingPrefixes="annox" 
           xmlns:annox="http://annox.dev.java.net"  
           targetNamespace="http://acme.example.com/system" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">

之后XJC开始给出以下错误,

不支持的绑定命名空间“http://annox.dev.java.net”。也许您指的是“http://java.sun.com/xml/ns/jaxb/xjc”?

xjc-p com.test-classpath=“jaxb2-basics-annotate-1.0.2.jar;tools-0.4.1.5.jar;comm on s-logging-1.1.1.jar;jaxb2-basics-runtime-0.9.5;annox-1.0.1.ja r;javaparser-1.0.11.jar;jaxb2-basics-tools-0.9.5.jar”-extension myschema.xsd

我找不到使用XJC和jaxb2-annotate-plugin生成java源代码的适当示例。我不能在我的Maven/Ant中添加它,正如我提到的,我必须在运行时生成xsd和pojo。

如果使用XJC工具作为java进程是唯一的方法,请告诉我,

  • 类路径中包含哪些依赖JAR?
  • 如何激活插件和-xannotate开关?

如果pojo生成可以用这个插件以其他方式完成,请建议相同的方式。

共有1个答案

王季萌
2023-03-14

免责声明:我是jaxb2-annotate-plugin的作者。

首先,如果使用XJC是指与JDK一起分发的二进制XJC(像Windows下的XJC.exe),XJC插件(包括jaxb2-annotate-plugin)不能使用来自JDK的XJC二进制。

原因是在为JDK打包XJC时,XJC包从com.sun.tools.XJC重命名为com.sun.tools.internal.XJC。第三方XJC插件扩展的是com.sun.tools.XJC.plugin,而不是com.sun.tools.internal.XJC.plugin,这就是它们不能与JDK封装的XJC一起工作的原因。

接下来,您说您在运行库中生成代码。我不太明白这是如何工作的,你需要编译类之后等等,但好吧,我假设你知道你做什么。无论如何,在这种情况下不应该通过命令行执行XJC。您可以通过com.sun.tools.xjc.API.xjc获得编程API。检查此问题和答案:

  • 在Java中生成JAXB类时添加toString、hashCode、equals
  • 如何在运行时以编程方式添加xjc插件?

相关:

  • 如何在命令行中将jaxb2-annotate-plugin与XJC一起使用
 类似资料:
  • 我正在使用maven-jaxb2-plugin和jaxb2-basics-annotate插件从我的xsd自动生成POJO。我已经成功地在POJO中生成了注释。我需要将注释应用于枚举中的方法,但不知道如何做到这一点。 xsd有, 生成的文件 我需要的是在上面的value方法中添加JsonValue注释。 我尝试了以下和其他一些调整,但在绑定。xjb什么都不起作用。 有什么叫做annotateEnu

  • 我正在使用jaxb2-annotate-plugin将project lombok注释添加到我生成的java代码中。在某些情况下,插件在注释中添加了可选的(在本例中是实验性的)额外信息。 注释类是lombok.noargsConstructor,它有可选的实验参数onConstructor 典型的和预期的输出应该是: 但我得到的是 我不想要添加的参数(不确定该参数的专有名词是什么),此外,这是不正

  • 如果您使用类似这样的插件来解析xsd文件,那么在从jdk7升级到JDK8时会遇到以下异常: 您如何使这个插件与JDK8一起工作?

  • 问题内容: 我目前正在从事Java 11迁移项目,其中jaxb2-maven-plugin已用于XJC任务。由于JDK 11版本中没有XJC可执行文件,因此出现以下错误。 下面是我的pom.xml 根据Java 11的要求,我添加了必要的依赖项,例如JAXB,JAXB-IMPL等。但是仍然无法解决问题。您对此有任何建议的解决方法吗?预先感谢。 问题答案: 我通过以下参考链接解决了此问题。 http

  • 问题内容: 我想将多个xsd模式解组到 同一 文件夹下的不同程序包中。我尝试了两个插件,并且似乎都可以在这两种配置下正常工作,但是在使用maven- jaxb2-plugin的情况下,eclipse插件会无限期地生成类(由于= true),但是如果我不指定forceRegenerate,它将不会生成运行时完全没有第二组和第三组类,我的配置是否有问题? jaxb2-maven-插件 maven-ja