[ https://issues.apache.org/jira/browse/FOP-2861?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17497450#comment-17497450 ]
Beat Hörmann commented on FOP-2861: ----------------------------------- FOP 2.7 is just one month old. Those who already had a workaround before, as me, and haven't yet changed to 2.7 may not have taken notice of this issue. I've seen somewhere on the net people referencing their items relative to Jar-Root and prefixing the path with "classpath:". This actually also worked for me when I deployed the application on Tomcat. But it didn't work outside of Tomcat and referencing fonts with an absolute path (absolute to jar-root or the filesystem's root) is a shaky affair. The URI-class does what RFC2396 demands: Don't parse opaque URIs. But in the context of Java and its omnipresent Jar-file-format an URI starting with "jar:file:/" can't be considered "unknown". I haven't yet met an official class in the JDK that handles this issue once and for all. Good that you have taken into account David's comment. I'm looking forward seeing your patch in the source code of FOP and thus getting rid of my JarResourceResolver. (By the way: Implementing the {{org.apache.xmlgraphics.io.ResourceResolver}} interface seems like a bit much work when it's just a matter of resolving a relative path against a jar-URI.) > Allow resource loading from jar: URI > ------------------------------------ > > Key: FOP-2861 > URL: https://issues.apache.org/jira/browse/FOP-2861 > Project: FOP > Issue Type: Improvement > Affects Versions: 2.0, 2.1, 2.2, 2.3, 2.4, 2.6, 2.7 > Reporter: Ole Sandum > Priority: Major > Attachments: FopResourceResolver.java, uri_resolve.diff, > uri_resolve_decoded.diff > > > 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. -- This message was sent by Atlassian Jira (v8.20.1#820001)