2012-08-09 3 views
6

liferay 6.1.1에 내 응용 프로그램을 배포하고이 오류 (6.0.6에서이 응용 프로그램을 테스트했을 때 모두 정상입니다)를 얻으려고합니다. 그것은 무엇을 의미 할 수 있습니까? com.liferay.portal.kernel.xml.DocumentException : liferay에서 xml 구문 분석 오류 6.1.1

가에 의한 오류를 문서의 라인 1 : 값은 인용 된 문자열이어야 XML 선언에서 "버전"을 다음과 같습니다. 중첩 예외 : XML 선언의 "version"다음에 오는 값은 따옴표 붙은 문자열이어야합니다.

up :이 오류를 나타내는 파일을 알 수 없습니다. 12 : : + 0400 20.322 | 정보 | glassfish3.1.2 | javax.enterprise 2012-08-09T15 | 전체 로그

내가 모르는 어떤 파일이 오류를주고 ... 모든 [# 로그 .system.std.com.sun.enterprise.server.logging | _ThreadID = 17; _ThreadName = Thread-3; | 15 : 12 : 20,321 ERROR [com.liferay.portal.kernel.deploy.auto.AutoDeployScanner] [AutoDeployDir : 210] com.liferay.portal.kernel.deploy.auto.AutoDeployException : com.liferay.portal.kernel.xml.DocumentException : 문서의 라인 1에 오류가 발생했습니다 : XML 선언의 "version"다음에 나오는 값은 따옴표 붙은 문자열이어야합니다 . 중첩 예외 : XML 선언의 "version"다음에 오는 값은 따옴표 붙은 문자열이어야합니다. com.liferay.portal.kernel.deploy.auto.AutoDeployException : com.liferay.portal.kernel.xml.DocumentException : 문서의 라인 1에서 오류가 발생했습니다. XML 선언의 "version"다음에 오는 값은 인용 문자열이어야합니다. 중첩 예외 : XML 선언의 "version"다음에 오는 값은 따옴표 붙은 문자열이어야합니다. com.liferay.portal.deploy.auto.PortletAutoDeployListener.deploy에서 com.liferay.portal.tools.deploy.BaseDeployer.autoDeploy (BaseDeployer.java:201) (PortletAutoDeployListener.java:84) com.liferay에서 에서 . portal.kernel.deploy.auto.AutoDeployDir.processFile (AutoDeployDir.java:193) at com.liferay.portal.kernel.deploy.auto.AutoDeployDir.scanDirectory (AutoDeployDir.java:235) at com.liferay.portal. kernel.deploy.auto.AutoDeployScanner.run (AutoDeployScanner.java:54) 발생 원인 : com.liferay.portal.kernel.xml.DocumentException : 문서의 라인 1에서 오류가 발생했습니다. XML 선언의 "version"다음 값은 인용 문자열. 중첩 예외 : XML 선언의 "version"다음에 오는 값은 따옴표 붙은 문자열이어야합니다. com.liferay.portal.xml.SAXReaderImpl.read에서 com.liferay.portal.xml.SAXReaderImpl.read (SAXReaderImpl.java:399) (SAXReaderImpl.java:378) com.liferay.portal.xml에서 에서 . (WebXMLBuilder.java : WebXMLBuilder.java : 60)의 COM com.liferay.portal.tools.deploy.BaseDeployer.deployDirectory (BaseDeployer.java:576) 에서 com.liferay.portal.tools.deploy.BaseDeployer.updateWebXml (BaseDeployer.java:2078) 에서 . liferay.portal.tools.deploy.BaseDeployer.deployFile (BaseDeployer.java:957) at com.liferay.portal.tools.deploy.BaseDeployer.deployFile (BaseDeployer.java:889) at com.liferay.portal.tools.deploy.BaseDeployer.autoDeploy (BaseDeployer.java:198) ... 4 more 에 의해 발생 : org.dom4j.DocumentException : 문서의 라인 1에 오류가 있습니다 : "version "는 XML 선언에서 따옴표 붙은 문자열이어야합니다. 중첩 예외 : XML 선언의 "version"다음에 오는 값은 따옴표 붙은 문자열이어야합니다. at org.dom4j.io.SAXReader.read (SAXReader.java:482) at org.dom4j.io.SAXReader.read (SAXReader.java:365) at com.liferay.portal.xml.SAXReaderImpl.read (SAXReaderImpl.java:396) ...13 개 | #]

+0

귀하의 web.xml보기 –

+1

"deploy"디렉토리에 뭔가가 있습니까? 플러그인? 어떤 버전입니까? –

+0

web.xml http://pastebin.com/bsRtCwvy – dmitrievanthony

답변

8

문제는 web.xml 파일에있을 수 있습니다. 6.1GA1에서는 잘 작동했지만 6.1GA2에서는 제대로 작동하지 않는 포틀릿과 비슷한 문제가있었습니다. Liferay가 포틀릿 (및 후크 등)을 배치 할 때 파일 및 기타 파일을 다시 작성하여 필터, 라이브러리 등을 추가합니다. 따라서 Liferay가 생성 한 내용과 함께 파일을 처음 만들 때 발생한 오류가 아닐 수 있습니다. 내 경우

은을 Liferay는 그래서 문제를 야기 수정 첫 번째 줄이었다
<?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 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"> 

에서 web.xml 파일의 첫 부분을 변경했습니다. 일부 XML을 <!-- -->을 사용하여 주석 처리하고 해당 섹션을 제거하면 문제가 해결되었습니다. 하지만 IMHO 버그입니다.

+4

동일한 문제가 발생하여 회피 방법이 작동하지만 실제로 Liferay 버그이므로 계속해서 문제를 만들었습니다. http://issues.liferay.com/browse/LPS-29373 – fimez

0

당신이, 당신은 폴더 구조와 검사에있는 모든 XML 파일을 확인해야 할 것중인 플러그인 (후크, 테마, 포틀릿 등) 오류의 원인이 알고있는 경우

<?xml version="1.0"?> 

지루한 작업이 될 것,하지만 다른 사람이 아닌 많은 당신은 할 수 있습니다 : 첫 번째 줄 지 확인하십시오 그것입니다!

오류를 일으키는 플러그인을 모르는 경우 찾을 때까지 하나씩 배포하십시오!

희망이 도움이됩니다.

+0

./ -name "* .xml"-exec head -1 {} \을 찾으십시오. | grep 버전; 찾기 ./ -name "* .xhtml"-exec head -1 {} \; | grep 버전 하지만 lib의 경우에도 모두 괜찮습니다. – dmitrievanthony

+0

6.1.1 Plugins-SDK를 사용하여 포틀릿을 다시 만들려고 했습니까? 그런 다음 소스를 복사합니까? – Jonny

1

web.xml의 태그 "display-name"에주의하십시오. 가끔 Eclipse 플러그인이 "j2ee : display-name"태그를 사용하여 web.xml을 만듭니다. Deployer가 "/ display-name"태그 위치 다음에 필터 블록 구성을 추가하려고합니다. "j2ee : display-name"이있는 경우 deployer는 필터 블록 구성을 "version"속성과 같은 파일의 잘못된 위치에 추가합니다. "j2ee : display-name"태그를 "display-name"태그로 바꾸면 문제가 해결됩니다.