Java EE EAR 部署描述符 eclipse DTD 验证器
Java EE EAR deployment descriptor eclipse DTD validator
我正在尝试解决一个关于我正在处理的项目的部署描述符的小问题。出于某种原因,Eclipse 没有根据 DTD 验证 XML 文件,但我不明白为什么。
这是 xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd" id="Application_ID" version="1.4">
<display-name>projectName-ear</display-name>
<module id="WebModule_1266621716287">
<web>
<web-uri>projectName-war.war</web-uri>
<context-root>projectName-war</context-root>
</web>
</module>
<library-directory>lib</library-directory>
</application>
这是我从 eclipse 验证程序中得到的错误:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'library-directory'. One of '{"http://java.sun.com/xml/ns/j2ee":module, "http://java.sun.com/xml/ns/j2ee":security-role}' is expected.
<library-directory>
是在 Java EE 5 中引入的。但是,您将 application.xml
声明为 J2EE 1.4 应用程序而不是 Java EE 5 应用程序。
<application ... version="1.4">
因此它将 运行 以 J2EE 1.4 向后兼容模式完全不支持 <library-directory>
。
对于 Java EE 5 应用程序(GlassFish 2、JBoss AS 4/5、WebSphere 6 等),使用以下作为根声明:
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd"
version="5">
或者如果您实际上是针对 Java EE 6 容器(GlassFish 3、JBoss AS 6/7、WebSphere 7、TomEE 1 等),那么最好使用以下内容根声明:
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd"
version="6">
或者如果您实际上是针对 Java EE 7 容器(GlassFish 4、WildFly 8、WebSphere 8、TomEE 2 等),那么最好使用以下内容作为根声明(注意新的 XML 命名空间域):
<application xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"
version="7">
请注意,这同样适用于其他 DD XML 文件,例如 Servlet 的 web.xml
、JSF 的 faces-config.xml
、CDI 的 beans.xml
等。根 XML 元素声明及其 version
非常重要!
我正在尝试解决一个关于我正在处理的项目的部署描述符的小问题。出于某种原因,Eclipse 没有根据 DTD 验证 XML 文件,但我不明白为什么。
这是 xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd" id="Application_ID" version="1.4">
<display-name>projectName-ear</display-name>
<module id="WebModule_1266621716287">
<web>
<web-uri>projectName-war.war</web-uri>
<context-root>projectName-war</context-root>
</web>
</module>
<library-directory>lib</library-directory>
</application>
这是我从 eclipse 验证程序中得到的错误:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'library-directory'. One of '{"http://java.sun.com/xml/ns/j2ee":module, "http://java.sun.com/xml/ns/j2ee":security-role}' is expected.
<library-directory>
是在 Java EE 5 中引入的。但是,您将 application.xml
声明为 J2EE 1.4 应用程序而不是 Java EE 5 应用程序。
<application ... version="1.4">
因此它将 运行 以 J2EE 1.4 向后兼容模式完全不支持 <library-directory>
。
对于 Java EE 5 应用程序(GlassFish 2、JBoss AS 4/5、WebSphere 6 等),使用以下作为根声明:
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd"
version="5">
或者如果您实际上是针对 Java EE 6 容器(GlassFish 3、JBoss AS 6/7、WebSphere 7、TomEE 1 等),那么最好使用以下内容根声明:
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd"
version="6">
或者如果您实际上是针对 Java EE 7 容器(GlassFish 4、WildFly 8、WebSphere 8、TomEE 2 等),那么最好使用以下内容作为根声明(注意新的 XML 命名空间域):
<application xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"
version="7">
请注意,这同样适用于其他 DD XML 文件,例如 Servlet 的 web.xml
、JSF 的 faces-config.xml
、CDI 的 beans.xml
等。根 XML 元素声明及其 version
非常重要!