Hi everyone.
Sorry for bringing this up after a few months, but here's what I usually do:
1. Download and copy the src/jpdl/org/jbpm/jpdl/xml/JpdlParser.java from the jbpm-jpdl 3.2.2 distribution to your project, as Dan already described.
2. Alter the nested JpdlEntityResolver class as follows:
static class JpdlEntityResolver implements EntityResolver, Serializable { ... public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { private static final String SEAM_NAMESPACE = "http://jboss.com/products/seam/"; ... if ("http://jbpm.org/jpdl-3.2.xsd".equals(systemId)) { ... <- else if's } else if (systemId.startsWith(SEAM_NAMESPACE)) { log.debug("recognized Seam namespace; attempting to resolve on classpath under org/jboss/seam/"); String path = "org/jboss/seam/" + systemId.substring(SEAM_NAMESPACE.length()); try { inputSource = new InputSource(org.jboss.seam.Seam.class.getResourceAsStream(path)); } catch (Exception e) { log.debug(e.toString()); } } if (inputSource == null) { log.debug("original systemId as input source"); inputSource = new InputSource(systemId); } return inputSource; } }
This way it tries to load a resource from the Seam package, but in case it fails, it tries the orignal systemId.