6

我尝试在 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 声明中“version”后面的值必须是带引号的字符串。在 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 个 |#] XML 声明中“version”后面的值必须是带引号的字符串。在 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 个 |#] XML 声明中“version”后面的值必须是带引号的字符串。在 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 个 |#]

4

3 回答 3

8

问题可能与您的 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">

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

于 2012-08-12T10:45:54.127 回答
1

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

于 2013-09-10T08:45:47.027 回答
0

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

<?xml version="1.0"?>

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

如果您不知道是哪个插件导致错误,请一一部署,直到找到它!

希望这可以帮助!

于 2012-08-09T19:11:44.313 回答