openjdk 编译_使用OpenJDK 11运行JAXB xjc编译器

openjdk 编译

如文章“ 要从Java 11中删除的API ”所述,JDK 11不再包括 JAXB实现。 在本文中,我将结合使用JAXB ( 用于XML绑定的Java体系结构 ) 参考实现提供的xjc编译器和OpenJDK 11,将XML模式文件编译成Java类。

在Java SE 6之前,想要与Java SE应用程序一起使用JAXB的开发人员需要单独获取JAXB实现,因为Java发行版未提供该实现。 从Java SE 6开始,Java包含一个JAXB实现。 这在许多情况下很方便,但是当开发人员希望使用比JDK所提供的版本更高或不同的JAXB 实现时,事情会变得有些困难 。 当OpenJDK 9引入了模块化时, JAXB实现被移到了java.xml.bind模块中 ,并标记为不推荐 删除 。 JAXB实现 与JDK 11一起全部删除 。 这篇文章探讨了将JAXB的xjc编译器与OpenJDK 11一起使用 。

由于JDK 11不再包含JAXB的实现,因此必须单独购买一个。 在本文中,我将使用2.3.0版的JAXB参考实现 。 本文中使用的JDK版本是JDK 11.0.2 General-Availability Release 。

在不带参数的情况下运行xjc脚本会导致将帮助/用法呈现到标准输出中。

Usage: xjc [-options ...] <schema file/URL/dir/jar> ... [-b <bindinfo>] ...
If dir is specified, all schema files in it will be compiled.
If jar is specified, /META-INF/sun-jaxb.episode binding file will be compiled.
Options:-nv                :  do not perform strict validation of the input schema(s)-extension         :  allow vendor extensions - do not strictly follow theCompatibility Rules and App E.2 from the JAXB Spec-b <file/dir>      :  specify external bindings files (each <file> must have its own -b)If a directory is given, **/*.xjb is searched-d <dir>           :  generated files will go into this directory-p <pkg>           :  specifies the target package-m <name>          :  generate module-info.java with given Java module name-httpproxy <proxy> :  set HTTP/HTTPS proxy. Format is [user[:password]@]proxyHost:proxyPort-httpproxyfile <f> :  Works like -httpproxy but takes the argument in a file to protect password -classpath <arg>   :  specify where to find user class files-catalog <file>    :  specify catalog files to resolve external entity referencessupport TR9401, XCatalog, and OASIS XML Catalog format.-readOnly          :  generated files will be in read-only mode-npa               :  suppress generation of package level annotations (**/package-info.java)-no-header         :  suppress generation of a file header with timestamp-target (2.0|2.1)  :  behave like XJC 2.0 or 2.1 and generate code that doesnt use any 2.2 features.-encoding <encoding> :  specify character encoding for generated source files-enableIntrospection :  enable correct generation of Boolean getters/setters to enable Bean Introspection apis -disableXmlSecurity  :  disables XML security features when parsing XML documents -contentForWildcard  :  generates content property for types with multiple xs:any derived elements -xmlschema         :  treat input as W3C XML Schema (default)-dtd               :  treat input as XML DTD (experimental,unsupported)-wsdl              :  treat input as WSDL and compile schemas inside it (experimental,unsupported)-verbose           :  be extra verbose-quiet             :  suppress compiler output-help              :  display this help message-version           :  display version information-fullversion       :  display full version informationExtensions:-Xinject-code      :  inject specified Java code fragments into the generated code-Xlocator          :  enable source location support for generated code-Xsync-methods     :  generate accessor methods with the 'synchronized' keyword-mark-generated    :  mark the generated code as @javax.annotation.Generated-episode <FILE>    :  generate the episode file for separate compilation-Xpropertyaccessors :  Use XmlAccessType PROPERTY instead of FIELD for generated classes

xjc编译器脚本(bash文件和DOS批处理文件)很方便调用jaxb-xjc.jar 。 脚本将其作为可执行JAR ( java -jar )调用,如以下摘录所示:

  • Windows版本( xjc.bat ):
    %JAVA% %XJC_OPTS% -jar "%JAXB_HOME%\lib\jaxb-xjc.jar" %*
  • Linux版本( xjc.sh ):
    exec "$JAVA" $XJC_OPTS -jar "$JAXB_HOME/lib/jaxb-xjc.jar" "$@"

如上面的脚本摘录所示,Java启动器的调用中包含一个环境变量XJC_OPTS 。 不幸的是,JAXB参考实现JAR不能简单地通过-classpath添加到类路径中,因为使用java -jar 运行可执行的JAR仅遵守通过MANIFEST.MFClass-Path (该条目存在于jaxb-ri-2.3.0.jar作为“ Class-Path: jaxb-core.jar jaxb-impl.jar ”)。

一种解决方法是修改脚本以将JAR用作常规JAR(不带-jar )并显式执行XXCFacade类,以便可以将类路径显式提供给Java启动器 。 Windows xjc.bat脚本xjc.bat进行了演示:

%JAVA% -cp C:\lib\javax.activation-api-1.2.0.jar;C:\jaxb-ri-2.3.0\lib\jaxb-xjc.jar com.sun.tools.xjc.XJCFacade %*

除了JAXB参考实现JAR javax.activation-api-1.2.0.jar ,我还需要在类路径中包括javax.activation-api-1.2.0.jar JAR,因为JavaBeans Application Framework ( JAF )是JDK也不再提供的依赖项(通过删除JAXB的同一JEP 320删除)。

当然,也可能根本不使用XJC脚本,而是直接运行Java启动器。 该脚本确保设置了环境变量JAXB_HOME 。 该环境变量应指向JAXB参考实现扩展到的目录。

通过这些更改,可以使用JDK 11在命令行上针对XSD执行JAXB xjc编译器。

翻译自: https://www.javacodegeeks.com/2019/01/running-jaxb-xjc-compiler-with-openjdk-11.html

openjdk 编译

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四川巴中中学2021高考成绩查询,巴中市高中排名(2021巴中市中学前十排名)

四川省的巴中市在我国全部革命史上面拥有超逸影响力&#xff0c;而且这所大城市也有着着悠长的历史时间。大城市内创立的普通高中不计其数&#xff0c;在其中四所普通高中成绩显著。而且这四所普通高中全是省部级示范性初中。1、通江中学在四川省巴中市漂亮的通江县&#xff0c…

unbantu上python安装步骤_如何在Ubuntu中安装Python 3.6?

Python是增长最快的主要通用编程语言。原因有很多&#xff0c;比如它的可读性和灵活性&#xff0c;易于学习和使用&#xff0c;可靠和高效。 有两个主要的Python版本被使用- 2和3 (Python的现在和未来);前者将看不到新的主要版本&#xff0c;而后者正在积极开发中&#xff0c;在…

IntelliJ IDEA for Mac的安装目录

点击显示包内容&#xff0c;就可以打开 IDEA 的安装目录了&#xff0c;如下图所示&#xff1a; 安装目录路径如下&#xff1a; /Applications/IntelliJ IDEA.app/Contents

spring序列化_使用@JsonIdentityInfo的Spring自定义序列化器

spring序列化介绍 Spring中从JSON到JSON的序列化/反序列化已广泛用于基于Spring的现代应用程序中。 它基于杰克逊。 Jackson可以轻松地将任何POJO序列化为JSON&#xff0c;反之亦然。 这段代码写得很好。 我从来没有遇到任何问题。 涉及自定义序列化程序时&#xff0c;将变得更…

阐述计算机网络的作用答案,计算机网络习题及答案(50页)-原创力文档

计算机网络习题及答案第一章 计算机网络的基本概念一、选择题√1、完成路径选择功能是在 OSI 模型的( )。A.物理层 B.数据链路层 C. 网络层 D.运输层2、在 TCP/IP 协议簇的层次中&#xff0c;保证端-端的可靠性是在哪层上完成的&#xff1f;()A. 网络接口层 B.互连层 C.传输层 …

python func_Python functool module

1.functools.partial(func,*args,**keywords) 实现 def partial(func, *args, **keywords):def newfunc(*fargs, **fkeywords): newkeywordskeywords.copy() newkeywords.update(fkeywords)return func(*args, *fargs, **newkeywords) newfunc.funcfunc newfunc.argsargs newfu…

IntelliJ IDEA for Mac中的Maven操作窗口详解

文章目录简介操作按钮详解Reload All Maven ProjectsGenerate Sources and Update Folders For All ProjectsDownload Sources and/or DocumentationAdd Maven ProjectsRun Maven BuildExecute Maven GoalToggle Offline ModeToggle Skip Tests ModeShow Dependencies布局展示模…

java 验证码透明背景_Java中的证书透明度验证

java 验证码透明背景因此&#xff0c;我有一个幼稚的想法&#xff0c;即除了证书有效性检查&#xff08;在Java中&#xff09;之外&#xff0c;将证书透明性验证作为每个请求的一部分也很容易。 牺牲了整个周末的一半时间&#xff0c;我可以证明这并不是一件小事。 但是&#…

html ajax请求jsp,JSP+jquery使用ajax方式调用json的实现方法

本文实例讲述了JSPjQuery使用Ajax方式调用JSON的实现方法&#xff0c;在这里分享给大家以供大家参考&#xff0c;具体的实现以及代码如下所示&#xff1a;前台&#xff1a;//testfunction test(uid){if(confirm("确定该用户操作"uid"吗&#xff1f;")){var…

ai背景合成_智能合成AI主播很危险,应立即取消!

邱震海分享我对时政问题的看法点击↑↑↑音频收听“倾听彼得 邱”音频背景每年两会&#xff0c;关注报道两会的记者多达3000多人&#xff0c;他们分布在会场内外及时捕捉两会动人瞬间和重要时刻&#xff0c;及时向全国乃至全球读者传递。但是今年的两会报道期间&#xff0c;新…

spring注入私有字段_Spring字段依赖注入示例

spring注入私有字段了解如何编写Spring Field Injection示例 。 字段注入是Spring框架 依赖注入的一种 。 在本教程中&#xff0c;我们将编写几个类&#xff0c;并看一看现场注入工程。 有关Spring依赖注入的更多信息&#xff1a; Spring Setter依赖注入示例 Spring构造函数…

简述html的3种列表uloldl,语义化HTML:ul、ol和dl

一、语义化元素1. ul标签W3C草案&#xff1a;The ul element represents an unordered list of items; that is, a list in which changing the order of the items would not change the meaning of list.语义化元素&#xff1a;表示包含一组无序列表项内容。在不同的浏览器默…

centos8 kernel source 安装_什么?你在物理机上安装Oracle总失败?那就试试Docker吧

写在前面有些小伙伴按照我写的《【Oracle】什么&#xff1f;作为DBA&#xff0c;你竟然不会安装Oracle&#xff1f;&#xff1f;》一文&#xff0c;在CentOS 8.0服务器上来安装Oracle&#xff0c;总是说&#xff1a;安装不成功&#xff01;但是我确实也是在CentOS 8.0服务器上安…

Maven的资源坐标

在 Maven 中&#xff0c;坐标是资源包的唯一标识&#xff0c;Maven 通过坐标在仓库中找到唯一的资源。 下面就是 javax.servlet-api-4.0.1.jar 的坐标&#xff1a; <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</…

starter_您是否尝试过MicroProfile Starter?

starterhttps://start.spring.io的SPRING INITIALIZR已经存在了一段时间&#xff0c;并且是引导新的Spring Boot应用程序的最佳方法。 到目前为止&#xff0c;即使不同的供应商为其实施提供了启动器&#xff0c;也没有类似的方式来引导新的MicroProfile项目。 但是等待已经结束…

html2image乱码问题,HtmlImageGenerator字体乱码问题解决、html2image放linux上乱码问题解决...

使用html2image-0.9.jar生成图片。在本地window系统正常&#xff0c;放到服务器linux系统时候中文乱码问题。英文可以&#xff0c;中文乱码应该就是字体问题了。一、首先需要在linux安装字体&#xff0c;simsun.ttc simsun.ttf simsunb.ttf1、新建目录/user/share/fonts/chine…

java每个阶段的学习时间_每个Java学习者都会犯的10个最常见的1个错误

java每个阶段的学习时间据说&#xff1a;“您的朋友会吞下您的错误&#xff0c;您的敌人会将它们呈现在盘子上”。 我绝对不是你的敌人&#xff0c;但我想向您介绍一些针对每个Java初学者的错误&#xff0c;我将在此博客“标牌”上就此做错。 当然只有其中一些&#xff0c;我是…

高速信号传输约翰逊 pdf_高速数字电路仿真设计与测试技术发展趋势综述 (一)...

近十多年来&#xff0c;数字集成电路和各种接口总线标准的发展令人眼花缭乱&#xff0c;目不暇接。各个总线标准通常由不同团队制订&#xff0c;其纷繁芜杂的测试和测量技术给从业人员带来许多困扰。本文将就当下的一些主要接口总线标准的仿真设计与测试技术发展趋势作一些简明…

Maven的继承

文章目录什么是继承&#xff1f;如何实现继承&#xff1f;什么是继承&#xff1f; 在聚合多个项目时&#xff0c;如果这些被聚合的项目中需要引入相同的Jar&#xff0c;那么可以将这些Jar写入父pom中&#xff0c;各个子项目继承该pom即可。 如何实现继承&#xff1f; 父pom配…