代码之家  ›  专栏  ›  技术社区  ›  Fahim Parkar

java.io.FileNotFoundException当文件在文件夹中时

  •  0
  • Fahim Parkar  · 技术社区  · 12 年前

    我使用JF2.0创建了这个项目。

    当我运行项目时,我可以执行文件 xyz.xhtml 通过说 http://localhost:8080/myProject/faces/xyz.xhtml

    然而,当我把同样的东西放进文件夹时 xyz 并尝试执行为 http://localhost:8080/myProject/faces/xyz/xyz.xhtml 我得到了例外 java.io.FileNotFoundException

    堆叠轨道的前几行是

    java.io.FileNotFoundException
    at org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:403)
    at com.sun.faces.facelets.impl.DefaultFaceletCache._getLastModified(DefaultFaceletCache.java:172)
    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:78)
    at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    

    有人能指出我做错了什么吗?

    更新1

    我的文件结构是

    + Web Content
      + WEB-INF
        - web.xml
        - faces-config.xml
      + xyz
        - xyz.xhtml
      - xyz.xhtml
    
    2 回复  |  直到 12 年前
        1
  •  0
  •   Luiggi Mendoza    12 年前

    也许你有这样的第一个文件夹结构

    + Web Content
      - xyz.xhtml
      + xyz
        - xyz.xhtml
    

    FacesServlet的servlet映射配置如下所示:

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    

    这意味着FacesServlet(向JSF框架发送请求的Servlet)将应用于ProjectName/Faces/<无论什么>(当且仅当页面位于面文件夹结构下时)。如果您想将FacesServlet应用于站点中的每个html页面,请将配置更改为:

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    

    编辑

    我根据你的问题做了一个测试。它应该不会有任何问题。确保项目已经正确构建并正确部署,如果您仍然存在这些问题,请尝试更改servlet映射配置。

        2
  •  0
  •   Richard Sitze    12 年前

    问题出在 xyz.xhtml :它使用相对路径而不是绝对路径引用资源(template?include?),当您将其向下移动到目录中时,该引用将不再有效。