MyBatis Generator 1.4.2运行报错:accessExternalDTD不被识别
解决MyBatis Generator的accessExternalDTD错误
以下是几种无需添加额外javax依赖的解决方法:
方法1:给MBG运行配置添加VM参数
通过设置Java虚拟机参数放宽XML的外部DTD访问限制:
- 打开Eclipse,依次进入
Window > Preferences > MyBatis Generator > Run Configurations - 选中你的MBG运行配置,切换到
Arguments标签页 - 在
VM arguments输入框中添加:
-Djavax.xml.accessExternalDTD=all
- 保存配置后重新运行MyBatis Generator
方法2:使用本地DTD文件替代远程加载
避免远程加载DTD触发安全限制:
- 下载MyBatis Generator的配置DTD文件
mybatis-generator-config_1_0.dtd,将其放置到项目的资源目录下(例如src/main/resources/dtd/) - 修改你的MBG配置文件
config.xml的DOCTYPE声明,替换为本地文件路径:
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "classpath:dtd/mybatis-generator-config_1_0.dtd">
- 重新运行MBG即可
方法3:修正配置文件中的潜在问题(附带优化)
你的配置里还有两个可能引发问题的点,建议一并修正:
- MySQL驱动类不匹配:你使用的是MySQL Connector/J 8.0.31,驱动类应该改为
com.mysql.cj.jdbc.Driver,而非旧版的com.mysql.jdbc.Driver - 依赖jar包错误:
classPathEntry引用的是sources.jar,应该替换为普通的编译jar包mysql-connector-j-8.0.31.jar
修正后的jdbcConnection和classPathEntry片段:
<classPathEntry location="C:\Users\.m2\repository\com\mysql\mysql-connector-j\8.0.31\mysql-connector-j-8.0.31.jar"/> <jdbcConnection connectionURL="jdbc:mysql://localhost:3306/xxx" driverClass="com.mysql.cj.jdbc.Driver" password="fuego" userId="xxxx" />
内容的提问来源于stack exchange,提问作者Cristian López González
相关产品推荐
相关产品推荐

