title: JSF2 and Facelets - java.io.FileNotFoundException
body: <p>My JSF 2 project structure is as follow:</p>
  
  <pre><code>root
  ...
     WebContent
        META-INF
        resources
           css
           images
           javascript
     templates
        commonLayout.xhtml
        footer.xhtml
        header.xhtml  
     views
        main
           index.xhtml
     WEB-INF
     index.jsp
  </code></pre>
  
  <p>I encounter this error when I tried to view my page at <a href="http://localhost/home/main/index.jsf" rel="noreferrer">http://localhost/home/main/index.jsf</a>:</p>
  
  <pre><code>java.io.FileNotFoundException
  at org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:381)
  at com.sun.faces.facelets.impl.DefaultFaceletCache._getLastModified(DefaultFaceletCache.java:161)
  at com.sun.faces.facelets.impl.DefaultFaceletCache.access$000(DefaultFaceletCache.java:62)
  at com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:82)
  at com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:79)
  at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99)
  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
  at java.util.concurrent.FutureTask.run(FutureTask.java:138)
  at com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:114)
  at com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:119)
  at com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:62)
  at com.sun.faces.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:248)
  at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:366)
  at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346)
  at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
  at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155)
  at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
  at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:82)
  at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
  at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:744)
  at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
  at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
  at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
  at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
  at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
  at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
  at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
  at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
  at java.lang.Thread.run(Thread.java:662)
  </code></pre>
  
  <p>The content of index.xhtml is:</p>
  
  <pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
  &lt;html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"&gt;
  
  &lt;ui:composition template="templates/commonLayout.xhtml"&gt;
      &lt;ui:define name="header"&gt;
          Add your header here or delete to use the default
      &lt;/ui:define&gt;
      &lt;ui:define name="content"&gt;
          Add your content here or delete to use the default
      &lt;/ui:define&gt;
      &lt;ui:define name="footer"&gt;
          Add your footer here or delete to use the default
      &lt;/ui:define&gt;
  &lt;/ui:composition&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p>I have been stuck on this issue for the last two days. Can anyone see what the problem is? I have no idea at all</p>