【问题标题】:xml-parsing error in liferay 6.1.1liferay 6.1.1 中的 xml 解析错误
【发布时间】:2012-08-09 12:48:31
【问题描述】:

我尝试在 liferay 6.1.1 上部署我的应用程序并收到此错误(当我在 6.0.6 上测试此应用程序时,一切正常)。这意味着什么?

原因:com.liferay.portal.kernel.xml.DocumentException:错误 文档的第 1 行:XML 中“版本”之后的值 声明必须是带引号的字符串。嵌套异常:值 XML 声明中的“版本”必须是带引号的字符串。

up:我不知道哪个文件给出了这个错误。 完整日志

我不知道是哪个文件给出了这个错误... 所有日志 [#|2012-08-09T15:12:20.322+0400|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=17;_ThreadName=Thread-3;| 15:12:20,321 错误 [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner][AutoDeployDir:210] com.liferay.portal.kernel.deploy.auto.AutoDeployException:com.liferay.portal.kernel.xml。 DocumentException:文档第 1 行出错:XML 声明中“版本”后面的值必须是带引号的字符串。嵌套异常:XML 声明中“版本”后面的值必须是带引号的字符串。 com.liferay.portal.kernel.deploy.auto.AutoDeployException:com.liferay.portal.kernel.xml.DocumentException:文档第 1 行出错:XML 声明中“版本”后面的值必须是带引号的字符串。嵌套异常:XML 声明中“版本”后面的值必须是带引号的字符串。 在 com.liferay.portal.tools.deploy.BaseDeployer.autoDeploy(BaseDeployer.java:201) 在 com.liferay.portal.deploy.auto.PortletAutoDeployListener.deploy(PortletAutoDeployListener.java:84) 在 com.liferay.portal.kernel.deploy.auto.AutoDeployDir.processFile(AutoDeployDir.java:193) 在 com.liferay.portal.kernel.deploy.auto.AutoDeployDir.scanDirectory(AutoDeployDir.java:235) 在 com.liferay.portal.kernel.deploy.auto.AutoDeployScanner.run(AutoDeployScanner.java:54) 原因:com.liferay.portal.kernel.xml.DocumentException:文档第 1 行出错:XML 声明中“版本”后面的值必须是带引号的字符串。嵌套异常:XML 声明中“版本”后面的值必须是带引号的字符串。 在 com.liferay.portal.xml.SAXReaderImpl.read(SAXReaderImpl.java:399) 在 com.liferay.portal.xml.SAXReaderImpl.read(SAXReaderImpl.java:378) 在 com.liferay.portal.xml.SAXReaderImpl.read(SAXReaderImpl.java:409) 在 com.liferay.portal.kernel.xml.SAXReaderUtil.read(SAXReaderUtil.java:155) 在 com.liferay.portal.tools.WebXMLBuilder.organizeWebXML(WebXMLBuilder.java:60) 在 com.liferay.portal.tools.deploy.BaseDeployer.updateWebXml(BaseDeployer.java:2078) 在 com.liferay.portal.tools.deploy.BaseDeployer.deployDirectory(BaseDeployer.java:576) 在 com.liferay.portal.tools.deploy.BaseDeployer.deployFile(BaseDeployer.java:957) 在 com.liferay.portal.tools.deploy.BaseDeployer.deployFile(BaseDeployer.java:889) 在 com.liferay.portal.tools.deploy.BaseDeployer.autoDeploy(BaseDeployer.java:198) ... 4 更多 原因:org.dom4j.DocumentException:文档第 1 行出错:XML 声明中“版本”后面的值必须是带引号的字符串。嵌套异常:XML 声明中“版本”后面的值必须是带引号的字符串。 在 org.dom4j.io.SAXReader.read(SAXReader.java:482) 在 org.dom4j.io.SAXReader.read(SAXReader.java:365) 在 com.liferay.portal.xml.SAXReaderImpl.read(SAXReaderImpl.java:396) ... 13 更多 |#]

【问题讨论】:

  • 你的“deploy”目录里有东西吗?插件?它们是哪些版本?

标签: xml liferay


【解决方案1】:

问题可能与您的 web.xml 文件有关。我有一个在 6.1GA1 下运行良好但在 6.1GA2 下运行良好的 portlet 的类似问题。当 Liferay 部署 portlet(和钩子等)时,它会重写文件和其他文件以添加过滤器、库等。因此错误可能不是您最初创建的文件,而是 Liferay 生成的文件。

在我的例子中,Liferay 将 web.xml 的第一部分从

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

类似

<?xml version=<filters>[other stuff]</filters>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

所以这是导致问题的第一行修改。我使用&lt;!-- --&gt; 注释掉了一些 XML,删除这些部分解决了问题。但恕我直言,这是一个错误。

【讨论】:

【解决方案2】:

注意 web.xml 中的标签“显示名称”。 有时(这是我的情况)Eclipse 插件使用“j2ee:display-name”标签创建一个 web.xml。 Deployer 尝试在“/display-name”标签位置之后附加过滤器块配置。 当存在“j2ee:display-name”时,部署程序会将过滤器块配置附加到文件中的错误位置,例如“版本”属性。 用“display-name”标签替换“j2ee:display-name”标签可以解决问题。

【讨论】:

    【解决方案3】:

    如果您知道哪个插件(钩子、主题、portlet 等)导致错误,那么您将不得不检查该文件夹结构中的所有 XML 文件并检查第一行并确保它是:

    <?xml version="1.0"?>
    

    这将是一项乏味的任务,但您无能为力!

    如果你不知道是哪个插件导致了错误,那就一一部署,直到找到为止!

    希望这会有所帮助!

    【讨论】:

    • 找到 ./ -name ".xml" -exec head -1 {} \; | grep 版本;查找 ./ -name ".xhtml" -exec head -1 {} \; | grep 版本,但一切正常,在 lib 中也是如此。
    • 您是否尝试过使用 6.1.1 Plugins-SDK 重新创建 portlet?然后跨源复制?
    猜你喜欢
    • 2013-07-31
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2017-03-11
    • 1970-01-01
    相关资源
    最近更新 更多