gpt4 book ai didi

java - Jasper可以编译web.xml中的XML外部实体吗?

转载 作者:行者123 更新时间:2023-11-30 03:17:02 24 4
gpt4 key购买 nike

我正在使用 Tomcat 7.0.52 和一个使用 Jasper 预编译 JSP 的项目。为此,我使用 Ant 运行 org.apache.jasper.JspC在我的输入 JSP 上。

Jasper 的部分功能是它需要处理我的 web.xml。问题是我的 web.xml 设置为包含一堆使用 XML 实体的共享样板。所以它看起来有点像这样:

<?xml version="1.0" standalone="no" encoding="utf-8"?>
<!DOCTYPE WebAppCommon [
<!ENTITY CommonContextParams SYSTEM "common-context-params.entity">
]>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
...
&CommonContextParams;
...
</web-app>

这让贾斯帕爆炸了。我收到的错误消息是:

Caused by: java.io.FileNotFoundException: Could not resolve XML resource [null] with public ID [null], system ID [common-context-params.entity] and base URI [/path/to/project/webapps/ROOT/WEB-INF/web.xml] to a known, local entity.

我详细查看了 JspC 类,但没有结果。我也在互联网上搜索过,但没有任何运气。大多数遇到此问题的人似乎都是因为 Tomcat 上下文中名为 allowExternalEntities=false 的限制而遇到此问题。但我仍处于构建阶段,所以这不是我的问题!

谁能告诉我一个可以更改的配置项,以使 Jasper 接受我的外部实体?

这是经过大量编辑的堆栈跟踪:


/path/to/project/build.xml:88: org.apache.jasper.JasperException: XML parsing error on file file:/path/to/project/webapps/ROOT/WEB-INF/web.xml
at org.apache.jasper.compiler.JspConfig.processWebDotXml(JspConfig.java:230)
at org.apache.jasper.compiler.JspConfig.init(JspConfig.java:243)
at org.apache.jasper.compiler.JspConfig.isJspPage(JspConfig.java:465)
at org.apache.jasper.JspC.scanFiles(JspC.java:1285)
at org.apache.jasper.JspC.execute(JspC.java:1340)
... ...
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
... ...
Caused by: org.apache.jasper.JasperException: XML parsing error on file file:/path/to/project/webapps/ROOT/WEB-INF/web.xml
at org.apache.jasper.xmlparser.ParserUtils.parseXMLDocument(ParserUtils.java:152)
at org.apache.jasper.compiler.JspConfig.processWebDotXml(JspConfig.java:95)
... 20 more
Caused by: java.io.FileNotFoundException: Could not resolve XML resource [null] with public ID [null], system ID [common-context-params.entity] and base URI [file:/path/to/project/webapps/ROOT/WEB-INF/web.xml] to a known, local entity.
at org.apache.tomcat.util.descriptor.LocalResolver.resolveEntity(LocalResolver.java:154)
at com.sun.org.apache.xerces.internal.util.EntityResolver2Wrapper.resolveEntity(EntityResolver2Wrapper.java:177)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.resolveEntityAsPerStax(XMLEntityManager.java:994)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1209)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEntityReference(XMLDocumentFragmentScannerImpl.java:1908)
... ...

最佳答案

您可以尝试使用(未记录的)命令行参数运行 JspC

-no-blockExternal

这应该与上下文中的 allowExternalEntities=true 具有相同的效果。

<小时/>

Jasper Ant task可以使用参数blockexternal设置此标志:

<jasper blockexternal="false" ... />

关于java - Jasper可以编译web.xml中的XML外部实体吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32323086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com