花了3天时间终于解决了这个问题,还是很开心的;)
问题:
严重: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at org.jbpm.pvm.internal.util.XmlUtil.attribute(XmlUtil.java:311)
at org.jbpm.pvm.internal.util.XmlUtil.attribute(XmlUtil.java:302)
at org.jbpm.jpdl.internal.xml.JpdlParser.parseDocumentElement(JpdlParser.java:175)
at org.jbpm.pvm.internal.xml.Parser.parseDocument(Parser.java:475)
at org.jbpm.pvm.internal.xml.Parser.execute(Parser.java:394)
at org.jbpm.pvm.internal.xml.Parse.execute(Parse.java:157)
at org.jbpm.jpdl.internal.repository.JpdlDeployer.deploy(JpdlDeployer.java:60)
at org.jbpm.pvm.internal.repository.DeployerManager.deploy(DeployerManager.java:46)
at org.jbpm.pvm.internal.repository.RepositorySessionImpl.deploy(RepositorySessionImpl.java:55)
at org.jbpm.pvm.internal.cmd.DeployCmd.execute(DeployCmd.java:46)
at org.jbpm.pvm.internal.cmd.DeployCmd.execute(DeployCmd.java:32)
at org.jbpm.pvm.internal.svc.DefaultCommandService.execute(DefaultCommandService.java:42)
at org.jbpm.pvm.internal.spring.CommandTransactionCallback.doInTransaction(CommandTransactionCallback.java:50)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
at org.jbpm.pvm.internal.tx.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:79)
at org.jbpm.pvm.internal.svc.EnvironmentInterceptor.execute(EnvironmentInterceptor.java:54)
at org.jbpm.pvm.internal.svc.RetryInterceptor.execute(RetryInterceptor.java:55)
at org.jbpm.pvm.internal.repository.DeploymentImpl.deploy(DeploymentImpl.java:89)
原因是因为file.encoding默认的字符集跟操作系统有关,中文操作系统下面默认的字符集是GBK,如果流程定义的xml文件中用UTF-8,
则不能正确转换,所以需要修改file.encoding的值为UTF-8。
部署在tomcat中的文件要修改file.encoding的值,可以在tomcat的catalina.bat文件中set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%的后面加上 -Dfile.encoding="UTF-8"
本文解决了一个JBPM流程引擎中出现的NullPointerException问题,原因是文件编码设置与操作系统默认编码不一致导致XML解析错误。通过修改Tomcat中catalina.bat文件的JAVA_OPTS参数,设置file.encoding为UTF-8来解决。

722

被折叠的 条评论
为什么被折叠?



