首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外部DTD:无法读取外部DTD 'mybatis-3-mapper.dtd',因为Quarkus本机不允许'http‘访问

外部DTD:无法读取外部DTD 'mybatis-3-mapper.dtd',因为Quarkus本机不允许'http‘访问
EN

Stack Overflow用户
提问于 2021-04-30 03:09:45
回答 1查看 298关注 0票数 0

我正在尝试在构建于docker本地模式的Quarkus项目中使用mybatis。加载xml映射文件时,会引发以下错误:

代码语言:javascript
复制
org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 108; External DTD: Failed to read external DTD 'mybatis-3 -mapper.dtd', because 'http' access is not allowed due to restriction set by the accessExternalDTD property.
  at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:263)                                                                                                                               
  at org.apache.ibatis.parsing.XPathParser.(XPathParser.java:127)                                                                                                                                       
  at org.apache.ibatis.builder.xml.XMLMapperBuilder.(XMLMapperBuilder.java:81)

我用来加载映射文件的代码片段是:

代码语言:javascript
复制
Configuration configuration = new Configuration();
String mapperResourceName = "mybatis/test.xml";
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(mapperResourceName);
XMLMapperBuilder mapperParser = new XMLMapperBuilder(inputStream, configuration, mapperResourceName,
                        configuration.getSqlFragments());
mapperParser.parse();
MappedStatement  mappedStatement = configuration.getMappedStatement("test");
BoundSql boundSql = mappedStatement.getBoundSql(params);

而映射器文件是:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="Test">
    <select id="test" >
        SELECT t
        FROM Test t
    </select>
</mapper>

我已经尝试添加了

代码语言:javascript
复制
<quarkus.native.additional-build-args>-J-Djavax.xml.accessExternalDTD=all</quarkus.native.additional-build-args>

没有成功。

EN

回答 1

Stack Overflow用户

发布于 2021-05-01 01:52:52

我已经找到了解决问题的方法:在Dockerfile.native文件中,必须在应用程序启动时添加-Djavax.xml.accessExternalDTD=all。

您可以在https://github.com/draccagni/quarkus-hibernate-orm-mybatis-3上找到re项目

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67323683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档