最近调试一个初步完成的基于jbpm的网站,发现一个极其奇葩的问题。
一个网站,用Myeclipse来启动Run as --> Tomcat 就是正常的,不会报错。但是直接在同样的Tomcat下直接启动tomcat,却报错了。
这个真是太伤大脑了。。。
后来经过调试,发现是XML读取的问题。以下是原先的读取代码:
gpdBytes = fileDefinition.getBytes("gpd.xml");
Element rootDiagramElement =DocumentHelper.parseText(new String(gpdBytes)).getRootElement();
由于刚开始里面只有英文节点,所以一切正常。但是后来变成了中文节点,怎么都无法成功。
于是就猜着存在编码问题,百度之,果然,这个读取的方式属于dom4j提供的,默认的读取来之后的gpdBytes是属于其他编码(gbk 或者iso--8859-1)。
于是把这个byte数组内的数据重新编码,问题完美解决。最终代码为:
gpdBytes = fileDefinition.getBytes("gpd.xml");
String str=new String(gpdBytes,"UTF-8");
Document document = DocumentHelper.parseText(str);
document.setXMLEncoding("UTF-8");
Element rootDiagramElement = document.getRootElement();