org.jbpm.jpdl.JpdlException: [[FATAL] line 1: Content is not allowed in prolog., [ERROR] couldn't parse process definition] 
java代码
public class WorkFlowAction extends ActionSupport {
        private int id;
private String name;
private String processDef;
private String processImage;
// 上传流程定义和流程图片的信息
public void upload()
throws Exception {
WorkFlowAction workFlowAction = new WorkFlowAction();

if (processDef != null && processDef != null) {
workFlowManager.addOrUpdateWorkflow(processDef.getBytes(),
processImage.getBytes());
}
//workFlowAction.openList();
}
      get、set方法省略.........public class WorkFlowDaoImpl extends HibernateDaoSupport implements
IWorkFlowDao { private JbpmFacade jbpmFacade; public void addOrUpdateWorkflow(byte[] processDef, byte[] processImage) { String workflowName = jbpmFacade.deployProcessDefinition(processDef);

// 首先根据流程名称,查询是否已有Workflow对象
WorkFlow wf = (WorkFlow) getSession().createQuery(
"select w from WorkFlow w where w.name = ?").setParameter(0,
workflowName).uniqueResult();
if (wf == null) {
wf = new WorkFlow();
wf.setName(workflowName);
wf.setProcessDef(processDef);
wf.setProcessImage(processImage);
getHibernateTemplate().save(wf);
} else {
wf.setProcessDef(processDef);
wf.setProcessImage(processImage);
getHibernateTemplate().update(wf);
}
}      public class JbpmFacadeImpl extends HibernateDaoSupport implements JbpmFacade { private JbpmConfiguration jbpmConfiguration;

    ..... public String deployProcessDefinition(byte[] processDef) {

JbpmContext context = getJbpmContext();

ProcessDefinition def = ProcessDefinition.parseXmlInputStream(
new ByteArrayInputStream(processDef)
);

context.deployProcessDefinition(def);

return def.getName();
}jsp 代码:
.....
<s:form action="workflowupload.action" mothod="post" enctype="multipart/form-data">
<s:file name="processDef"></s:file>
<s:file name="processImage"></s:file>
<s:submit value="上传"></s:submit>
</s:form>....流程定义文件:
process.xml
<?xml version="1.0" encoding="UTF-8"?>
<process-definition name="文档测试流程二">
<start-state name="开始">
<transition name="提交张三审批" to="张三审批"></transition>
</start-state>
<task-node name="张三审批">
<task name="审批1">
<assignment actor-id="张三"></assignment>
</task>
<transition name="提交李四审批" to="李四审批"></transition>
</task-node>
<task-node name="李四审批">
<task name="审批2">
<assignment actor-id="李四"></assignment>
</task>
<transition name="提交王五审批" to="王五审批"></transition>
</task-node>
<task-node name="王五审批">
<task name="审批3">
<assignment actor-id="王五"></assignment>
</task>
<transition name="结束流程" to="结束"></transition>
</task-node>
<end-state name="结束"></end-state>
</process-definition>过程:
通过界面上传process.xml文件 然后系统报错:
org.jbpm.jpdl.JpdlException: [[FATAL] line 1: Content is not allowed in prolog., [ERROR] couldn't parse process definition]
    org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:173)
     ......
上网查,说可能是BOM问题,说很多编辑器保存UTF-8时会在前面加个0xFE之类的,
我用NotePad 已经设置为UTF-8 无BOM格式编码 不知道为什么还会出现这个问题...
麻烦大家帮我分析一下问题出在什么地方了?   谢谢了