Melloware created MYFACES-4571: ---------------------------------- Summary: Quarkus: GraalVM Native never use JAR resource Key: MYFACES-4571 URL: https://issues.apache.org/jira/browse/MYFACES-4571 Project: MyFaces Core Issue Type: Improvement Components: Extension Feature Affects Versions: 4.0.0-RC5, 2.3-next-M7 Reporter: Melloware
[~tandraschko] I need some advice. I have 99% of functionality now working in GraalVM native image I am down to my last issue. It use using Tag Library in Faces config is blowing up in Native Mode and here is why when its resolving the Facelet URL. It is listed in *faces-config.xml* like this.. {code:java} <tag> <tag-name>tabscode</tag-name> <source>resources/tags/tabscode.xhtml</source> </tag> {code} *DEV MODE (works):* {noformat} Source URL = file:/C:/dev/primefaces/quarkus-faces/src/main/resources/META-INF/resources/template/template.xhtml Path = ./config.xhtml Facelet URL = file:/C:/dev/primefaces/quarkus-faces/src/main/resources/META-INF/resources/template/config.xhtml Facelet URL = file:/C:/dev/primefaces/quarkus-faces/target/classes/META-INF/resources/tags/tabscode.xhtml{noformat} *PROD JAR MODE (works):* {noformat} Source URL = jar:file:/C:/dev/primefaces/quarkus-faces/target/quarkus-app/app/quarkus-faces.jar!/META-INF/resources/template/template.xhtml Path = ./config.xhtml Facelet URL = jar:file:/C:/dev/primefaces/quarkus-faces/target/quarkus-app/app/quarkus-faces.jar!/META-INF/resources/template/config.xhtml Facelet URL = jar:file:/C:/dev/primefaces/quarkus-faces/target/quarkus-app/app/quarkus-faces.jar!/META-INF/resources/tags/tabscode.xhtml{noformat} *GRAALVM NATIVE MODE (fails):* {noformat} Source URL = resource:/META-INF/resources/template/template.xhtml Path = ./config.xhtml Facelet URL = resource:/META-INF/resources/template/config.xhtml Facelet URL = jar:file:/project/quarkus-faces-runner.jar!/META-INF/resources/tags/tabscode.xhtml{noformat} As you can see tabscode then blows up with... {noformat} java.nio.file.NoSuchFileException: /project/quarkus-faces-runner.jar at java.base@17.0.6/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55) at java.base@17.0.6/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:148) at java.base@17.0.6/sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99) at java.base@17.0.6/java.nio.file.Files.readAttributes(Files.java:1851) at java.base@17.0.6/java.util.zip.ZipFile$Source.get(ZipFile.java:1264) at java.base@17.0.6/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:709) at java.base@17.0.6/java.util.zip.ZipFile.<init>(ZipFile.java:243) at java.base@17.0.6/java.util.zip.ZipFile.<init>(ZipFile.java:172) at java.base@17.0.6/java.util.jar.JarFile.<init>(JarFile.java:347) at java.base@17.0.6/sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:103) at java.base@17.0.6/sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:72) at java.base@17.0.6/sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:168) at java.base@17.0.6/sun.net.www.protocol.jar.JarFileFactory.getOrCreate(JarFileFactory.java:91) at java.base@17.0.6/sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:132) at java.base@17.0.6/sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:175) at java.base@17.0.6/java.net.URL.openStream(URL.java:1161) at org.apache.myfaces.view.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:824) at org.apache.myfaces.view.facelets.compiler.Compiler.compile(Compiler.java:80) at org.apache.myfaces.view.facelets.impl.DefaultFaceletFactory._createFacelet(DefaultFaceletFactory.java:344) at org.apache.myfaces.view.facelets.impl.DefaultFaceletFactory.lambda$new$0(DefaultFaceletFactory.java:105) at org.apache.myfaces.view.facelets.impl.CacheELFaceletCacheImpl.getFacelet(CacheELFaceletCacheImpl.java:137) at org.apache.myfaces.view.facelets.impl.CacheELFaceletCacheImpl.getFacelet(CacheELFaceletCacheImpl.java:45){noformat} Basically I was hoping you could point to me in the code based 1 or two spots where in GRAAL mode I can override anything that is a JAR to be "resource:/META-INF" instead of a JAR ever I can do it with a GraalVM Substitution but was hoping for some guidance on where to look at the best spot. -- This message was sent by Atlassian Jira (v8.20.10#820010)