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.