由于linux和windows的换行符不一致,有时在这种系统间的文件交换就会出现问题。我就碰到这样的问题。
本来应该是这样的Struts-config.xml内容:
|
可能是从windows转到linux下变成了这样:
|
这在本地的Tomcat5和空间原来的Resin2下都没有问题,但是当空间改为Resin3后,每次重新启动应用就报错:
|
但是奇怪的是,应用启动后的工作看起来还是正常的。
下面附的是相关的文字:(转自:http://www.real-blog.com/linux-bsd-notes/67)
Unix 及 Windows 文字檔轉換
大家如果試過在 Linux 及 Windows 文字檔分享的話,會發現文字檔的 “換行” 不一樣。在 Windows 用記事本開啟 Unix 文字檔時,文件不會開新行,需要使用支援 Unix 格式的文字編輯器才可看到分行;而在 Linux 開啟 Windows 的文字檔時,在每一行最後會有字元 Ctrl-m (^M)。以下是使用 Perl 在 Linux 下將文字檔轉換的方法:
Windows 格式 -> Unix 格式
perl -p -e ’s/\r$//’ < winfile.txt > unixfile.txt
Unix 格式 -> Windows 格式
perl -p -e ’s/\n/\r\n/’ < unixfile.txt > winfile.txt
February 13, 2006 · Linux / BSD 筆記, Windows 筆記 ·
1 Comment »
1.
UNIX WINDOWS MAC三者的回车都不一样,好像是:windows是0×0d 0×0a
UNIX是0×0d MAC是0×0a吧。记不太清楚了。大体上是这样的。
Comment by 数据恢复 — April 6, 2006 @
2006-12-29 15:07:55,531 - Parse Error at line 494 column 17: The content of element type "action" must match "(icon?,display-name?,description?,set-property*,exception*,forward*)".
org.xml.sax.SAXParseException: The content of element type "action" must match "(icon?,display-name?,description?,set-property*,exception*,forward*)".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1572)
at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:738)
at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:687)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:333)
at javax.servlet.GenericServlet.init(GenericServlet.java:82)
at com.caucho.server.http.Application.createServlet(Application.java:3114)
at com.caucho.server.http.Application.loadServlet(Application.java:3065)
at com.caucho.server.http.Application.initServlets(Application.java:1923)
at com.caucho.server.http.Application.init(Application.java:1849)
at com.caucho.server.http.VirtualHost.init(VirtualHost.java:728)
at com.caucho.server.http.ServletServer.initHosts(ServletServer.java:887)
at com.caucho.server.http.ServletServer.initInternal(ServletServer.java:729)
at com.caucho.server.http.ServletServer.init(ServletServer.java:538)
at com.caucho.server.http.ResinServer.init(ResinServer.java:406)
at com.caucho.server.http.ResinServer.main(ResinServer.java:1167)
at com.caucho.server.http.HttpServer.main(HttpServer.java:103)