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 编译

openjdk 编译_使用OpenJDK 11运行JAXB xjc编译器相关推荐

  1. 使用OpenJDK 11运行JAXB xjc编译器

    如文章" 要从Java 11中删除的API "所述,JDK 11不再包含 JAXB实现. 在本文中,我将结合使用JAXB ( 用于XML绑定的Java体系结构 ) 参考实现提供的x ...

  2. Buildroot OpenJDK 编译配置

    平台 Ubuntu 20.04 + Buildroot 2021.02 + OpenJDK 11.0.8 目标 配置Buildroot使能OpenJDK, 编译后模拟器运行如下: ~/codes/bu ...

  3. java无ide编译_[转]无IDE时编译和运行Java

    本文由 ImportNew - Grey 翻译自 dzone.欢迎加入Java小组.转载请参见文章末尾的要求. 最近Java subreddit出现了一篇"在没有IDE的情况下编译Java包 ...

  4. 安卓代码拉下来编译后怎么运行_科普:什么是华为方舟编译器?如何工作?荣耀手机能用吗?...

    EMUI发展至今,服务着216个国家和地区中的4.7亿日活跃用户.我们不忘初心,砥砺前行,只为更好地服务用户. 从EMUI5.0的"天生快,一生快",到EMUI8.2的GPU Tu ...

  5. 编译通过,但在运行时报Resolution of the dependency failed

    利用PRISM框架开发项目,编译通过,但在运行时报Resolution of the dependency failed,后来发现在ViewModel中没有实例华Client,真是晕. 转载于:htt ...

  6. java 应用分模块_在Java 11中创建一个简单的模块化应用教程

    模块化编程使人们能够将代码组织成独立的,有凝聚力的模块,这些模块可以组合在一起以实现所需的功能. 本文摘自Nick Samoylov和Mohamed Sanaulla撰写的一本名为Java 11 Co ...

  7. linux下qt静态编译_自由出土文物的空间_百度空间

    linux下qt静态编译_自由出土文物的空间_百度空间 linux下qt静态编译_自由出土文物的空间_百度空间 linux下qt静态编译 2012-04-09 13:10 测试通过,贴一下过程,仅用来 ...

  8. 编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)

    编译可在Nexus5上运行的CyanogenMod13.0 ROM (基于Android6.0) 作者:寻禹@阿里聚安全 前言 下文中无特殊说明时CM代表CyanogenMod的缩写. 下文中说的&q ...

  9. python文件编译_我算是白学Python了,现在才知道原来Python是可以编译的

    斌哥说 大家好,我是斌哥. 一说起Python,可能开发者第一时间想到的就是:"Python是一门能快速开发的解释型语言". 没错,Python确实是一门解释型的语言,而对比Jav ...

最新文章

  1. 资深SAP专家谈如何深入SAP开发
  2. 面向对象编程的思想(2)
  3. 优贝共享数据交易所网_2020.9.9号币圈简报:水天共享数据迁移,链淘公告明天开始减产...
  4. Zookeeper 安装和配置---学习三
  5. vc++中画线时xor_C ++'xor_eq'关键字和示例
  6. Selenium自动化测试-4.By定位及如何确定元素唯一
  7. 基础总结篇之三:Activity的task相关
  8. ASP.NET基础教程-利用javascript将光标定位到文本框
  9. Directional Light,Ambient,Specular,光照感性认识...
  10. 专稿 | 巨头再聚、新品齐发,进博三年,合作共赢
  11. 动手学TCP——CS144实验感想
  12. edge下载网络问题无法下载
  13. OpenCV 银行卡卡号识别
  14. 使用cpufreq给CPU临时调整主频
  15. 【Tableau】时间维度
  16. H5扫描二维码获取内容
  17. 妈妈说就算你注册的域名再长google都能搜索出来-google太强了
  18. 2019CCPC女生专场赛_K - Tetris_打表/模拟_暴力之王
  19. 大数据毕设/课设 - 水质情况实时监测预警可视化设计与实现
  20. presto基于kerberos访问hive的安装

热门文章

  1. 牛客网【每日一题】Shortest Path 4月3日题目精讲 DFS
  2. [省选联考 2020 A/B 卷] 信号传递(状压dp + 卡空间)
  3. [Luogu2279][HNOI2003] 消防局的设立
  4. 分羊(区间dp:分治与决策单调性优化)
  5. YbtOJ#943-平方约数【莫比乌斯反演,平衡规划】
  6. jzoj4016-圈地为王【状压,bfs,几何】
  7. nssl1162-农夫约的假期【中位数,贪心】
  8. jzoj2136-(GDKOI2004)汉诺塔【找规律,模拟】
  9. 【并查集】小 X 的液体混合
  10. csp初赛复习(往年真题+解析)