XJC 4.0.1开启jaxp特性仍报“External parsing is disabled”错误求助
XJC 4.0.1 从DTD生成Java代码问题排查方案
1. 指定-dtd参数仍收到启用警告
- 确认命令参数顺序:XJC 4.0.1要求
-dtd参数放在文件名之前,正确命令格式为:xjc -dtd your.dtd,避免将参数放在文件路径之后导致识别失效。 - 校验XJC版本:执行
xjc -version确认调用的是4.0.1版本,若系统存在多版本JDK/JAXB,可能会调用旧版本,需确保环境变量PATH中优先指向目标JDK的bin目录。
2. 配置jaxp.properties仍报“External parsing is disabled”
- 命令行直接传入系统属性:跳过配置文件优先级问题,执行命令时附加参数强制开启权限,示例:
xjc -dtd -Djavax.xml.accessExternalDTD=all -Djavax.xml.accessExternalSchema=all your.dtd - 检查配置文件位置:Windows下
jaxp.properties需放置在<目标JDK安装目录>/jre/lib路径下,若使用独立JRE则放在<JRE安装目录>/lib,确保XJC读取的是对应环境的配置文件。
3. 本地DTD仍报错与“Failed to parse a schema”说明
- “Failed to parse a schema”是XJC的通用解析异常提示,只要DTD解析过程中出现任何错误(语法问题、路径错误、权限限制等)都会触发该信息,需结合具体错误堆栈定位根源。
- 校验本地DTD路径:使用绝对路径指定DTD文件(如
xjc -dtd C:\projects\your.dtd),避免相对路径因当前工作目录不符导致文件无法找到。 - 验证DTD合法性:用本地XML校验工具检查DTD是否存在语法错误,比如未正确定义的实体、闭合标签缺失、非法属性等,这类问题是导致解析失败的常见原因。
内容的提问来源于stack exchange,提问作者mbmast
相关产品推荐
相关产品推荐

