0

在 Jboss 中部署 EAR 时,应用程序无法启动并抛出以下堆栈跟踪:

16:33:31,804 WARN  [EntityResolver] Entity is not registered, publicId=-//Sun  Microsystems, Inc.//DTD J2EE Application Client 1.2//EN systemId=http://java.sun.com/j2ee/dtds/application-client_1_2.dtd    
16:33:32,112 ERROR [XmlFileLoader] The markup declarations contained or pointed to by the  document type declaration must be well-formed.:2:1
org.xml.sax.SAXParseException: The markup declarations contained or pointed to by the document type declaration must be well-formed.    
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at org.jboss.metadata.XmlFileLoader.getDocument(XmlFileLoader.java:313)
at org.jboss.metadata.XmlFileLoader.getDocument(XmlFileLoader.java:257)
at org.jboss.deployment.ClientDeployer.start(ClientDeployer.java:122)
~~~ snip ~~~
at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:242)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
at $Proxy8.deploy(Unknown Source)

这可能与我的应用程序使用的库/jar 有关吗?

4

1 回答 1

1

这是关键:

文档类型声明包含或指向的标记声明必须格式正确。

众所周知,当引用损坏、丢失或无法访问的 DTD 时会发生这种情况。

首先,看服务描述符 XML 是否有效。如果是这样,作为测试,删除 DTD 并重试。

如果您的应用程序(或库)试图通过从 Internet 读取 DTD 来验证文档,则 JBoss 将需要 Internet 访问权限。-Dhttp.proxyHost=yourproxy如果您使用代理,请添加。您还可以检查 DTD 是否确实在线且可用,这可能会导致相同的症状。

Jira 上的相关 JBoss 问题

于 2012-06-15T12:52:12.027 回答