Details
Description
When deploying an application, the placement of the MANIFEST.MF file in a loose application xml can cause a java.lang.StringIndexOutOfBoundsException during MyFaces initialization. This problem occurs with the following path: /tmp/war/MANIFEST.MF
This issue was solved in JSF 2.3 with MYFACES-4273, but not in JSF 2.2.
By moving the catch block to the outer try block in myfaces/view/facelets/util/Classpath.java, the StringIndexOutOfBoundsException will be caught, and the faces initialization will continue normally.
Stack Trace:
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.base/java.lang.String.substring(String.java:2628)
at org.apache.myfaces.view.facelets.util.Classpath._searchFromURL(Classpath.java:246)
at org.apache.myfaces.view.facelets.util.Classpath._searchResource(Classpath.java:119)
at org.apache.myfaces.view.facelets.util.Classpath.search(Classpath.java:69)
at org.apache.myfaces.config.DefaultFacesConfigResourceProvider.getMetaInfConfigurationResources(DefaultFacesConfigResourceProvider.java:90)
at org.apache.myfaces.config.DefaultFacesConfigurationProvider.getClassloaderFacesConfig(DefaultFacesConfigurationProvider.java:312)
… 21 more