常见异常

原创
2013/01/14 22:00
阅读数 138


sax错误:org.xml.sax.SAXParseException: Content is not allowed in
prolog
解决



原因及其解决办法:



1.xml编码错误



xmlUTF-8编码的,如果该文件通过UltraEdit编辑后,会在无BOM头的UTF-8文件中加入BOM,但是DOM4j不认这个BOM(dom4j1.3),解决的办法可以通过升级dom4j1.6解决www.dom4j.org



什么是BOMhttp://www.unicode.org/faq/utf_bom.html#22Unicode规范中有一个BOM的概念。BOM——Byte Order Mark,就是字节序标记。在这里找到一段关于BOM的说明:



UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK
SPACE"
的字符,它的编码是FEFF。而FFFEUCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK
SPACE"
。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符"ZERO WIDTH NO-BREAK
SPACE"
又被称作BOM



UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK
SPACE"
UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。



Windows就是使用BOM来标记文本文件的编码方式的。



 



2.xml文件存在非法字符



xml 动手敲一遍,删除不该有的间隔符:比如空格,制表符(TAB)等。



异常提示是Content is not allowed in prolog.意思就是说文件开头的时候有问题。



怎么去掉BOM



首先windows自带的记事本会在保存UTF-8编码的文件时不管是否含有BOM一律加上BOM,所以千万别用记 事本。比较新版本的UltraEdit(以下简称UE,大家都是这么叫的)都对BOM支持比较好,所以推荐使用新版本的UE来解决这个问题。我用的版本是 UltraEdit-32 11.00a+中文版。首先打开UE,选择菜单栏高级配置,出现一个选项卡窗口,在常规选项卡中找到保存时对所有UTF-8文件头标记 BOM对在UltraEdit里创建的新文件写入UTF-8文件头标记(如上面),把它们的复选框都取消不选,然后确定。这个时候UE默认情 况下就不会对没有BOM的文件加入BOM,注意如果不执行上述操作UE默认也是会加的!那已经含有BOM的文件如何清除BOM呢?下面演示给大家。首先打 开文件,选择菜单栏文件格式转换“UTF-8 ASCII”,这样文件会被转为ASCII编码,BOM就不会存在了,因为上面说过BOM是在UCS编码的头部的,然后再选择菜单栏文件格式转 “ASCII
UTF-8Unicode编辑),这个时候文件会被转回为UTF-8编码,因为我们上面选了不自动加BOM,所以这个时候的文件是不带BOM的,然后 保存文件。整个操作过程就完毕了。



         response.getWriter().println(resourceJson);







result=eval('('+result+')');











List<BaseAddress>
listBaseAddress =
interTicketsReservationService



          .findBaseAddressByCityName(cityName);



     JSONArray strJson = JSONArray.fromObject(listBaseAddress);



     response.getWriter().println(strJson);





org.springframework.jdbc.UncategorizedSQLException:
SqlMapClient operation; uncategorized SQLException for SQL []; SQL state
[null]; error code [17002];



解决办法:com.domain.base.BaseParent 的构造函数中有一个protected的方法,即 

public BaseParent(){ 

    init(); 

} 

protected void init(){} 

把这个方法去掉就可以了 

原来需要cglibpo的构造函数中不能加任何别的方法 

如果加了 protected
的方法,会出现异常 

如果加了 public 的方法,不会出异常,但延迟加载会无效。 











org.dom4j.DocumentException:
Error on line 1 of document  : The markup
in the document following the root element must be well-formed. Nested
exception: The markup in the document following the root element must be
well-formed.



解决办法:拼接的XML中没有根节点。



展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部