Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.0, 2.1, 2.2, 2.3, 2.4, 2.6, 2.7
-
None
-
None
-
Patch
Description
We would like to load our FOP config.xml along with related fonts and hyphenation files using the common classloader URL, e.g.:
URL configXml = getClass().getResource("config.xml");
FopConfParser confParser =
new FopConfParser(configXml.openStream(), configXml.toURI());
This makes for easy deployment, and works nicely as long as classes and resources are loaded from separate files, i.e. from file:/some/path/config.xml URIs. However, it fails when classes and resources are packaged and loaded directly from a jar, i.e. from jar:file:/some/archive.jar!/path/config.xml URIs, as is the case when deploying with JWS or running an all-in-one executable jar, as it will fail to properly resolve the related font and hyphenation file URIs.
See https://github.com/osandum/fop-test.git for a test to illustrate.
This is a consequence of a long standing issue (reported in https://bugs.openjdk.java.net/browse/JDK-8020755) that URI.resolve(childUri) doesn't work as expected on jar:file: URIs.
In this case, it can be easily remedied by a work-around to the call in InternalResourceResolver.resolveFromBase(URI uri). Patch attached.
Attachments
Attachments
Issue Links
- is duplicated by
-
FOP-3099 Embedding fonts in JAR no longer possible in 2.x
- Resolved