无法获取struts.xml连接到"http://struts.apache.org/dtds/struts-2.0.dtd"

Cha*_*ton 2 java xml validation dtd struts2

我在Rational Application Developer(RAD)v 7.5.3中使用Struts2.

我在struts.xml文件中不断收到以下警告:

该文件无法验证为XML Schema" http://struts.apache.org/dtds/struts-2.0.dtd ",指定为无法找到该文件的语法.

我在src文件夹中有struts.xml文件.

我正在使用的Struts2 jar文件是struts2-core-2.3.16.3.jar.

我在struts.xml文件中有以下内容:

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
Run Code Online (Sandbox Code Playgroud)

我已经尝试将struts-2.0.dtd更改为struts-2.3,以便它看起来像这样:

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
Run Code Online (Sandbox Code Playgroud)

(当我第一次发布这个问题时,我忘记在上面的第二个例子中将"DTD Struts配置2.0"更改为"DTD Struts配置2.3".我更正了它但之后仍然遇到了问题.感谢Roman C指出了这一点.)

但由于某种原因它仍然无法连接.

我把这些struts网址放在我的浏览器中,看看我的浏览器是否可以访问它们,他们可以.当您在浏览器中访问URL时,浏览器会提示您下载该文件.

我可以运行我的示例Struts2应用程序,但此验证警告不会消失.我想知道是否有人知道可能导致它的原因以及如何摆脱警告.

谢谢.

更新:

我试过了

    <!DOCTYPE struts-config PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
        "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
Run Code Online (Sandbox Code Playgroud)

这很有效.显然,我得到了验证错误,因为我的工作区使用的是Struts2,而不是Struts1.但URL工作.

我试过了

    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
Run Code Online (Sandbox Code Playgroud)

它没有用.我甚至试过了

    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://jakarta.apache.org/struts/dtds/struts-2.3.dtd">
Run Code Online (Sandbox Code Playgroud)

它仍然无法正常工作.

我正在使用Struts2与2.3.16.3.

出于某种原因,它不喜欢!DOCTYPE标记中的第一个字符串.

如果!DOCTYPE标记中的第一个字符串不是:

    "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
Run Code Online (Sandbox Code Playgroud)

!DOCTYPE标签中第二个字符串中的url 无论是什么都无法访问,无法在RAD中读取.

我想知道是否有人知道为什么会发生这种情况.

谢谢你的回复.

Rom*_*n C 5

对于某些与外部世界的连接受防火墙限制或站点暂时不可用的系统,您可以在DOCTYPE声明中修改DTD的位置.您可以从其中一个核心jar中提取DTD并将其置于例如下面,WEB-INF/dtds并按以下方式修改DOCTYPE声明

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "/WEB-INF/dtds/struts-2.3.dtd">
Run Code Online (Sandbox Code Playgroud)