Jsf 当文件位于文件夹中时,java.io.FileNotFoundException

Jsf 当文件位于文件夹中时,java.io.FileNotFoundException,jsf,file-io,jsf-2,filenotfoundexception,Jsf,File Io,Jsf 2,Filenotfoundexception,我已经使用JF2.0创建了这个项目 当我运行project时,我可以通过说http://localhost:8080/myProject/faces/xyz.xhtml 但是,当我将其放入文件夹xyz并尝试以http://localhost:8080/myProject/faces/xyz/xyz.xhtml我将异常作为java.io.FileNotFoundException stacktrace的前几行是 java.io.FileNotFoundException at org.apache

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

当我运行project时,我可以通过说
http://localhost:8080/myProject/faces/xyz.xhtml

但是,当我将其放入文件夹
xyz
并尝试以
http://localhost:8080/myProject/faces/xyz/xyz.xhtml
我将异常作为
java.io.FileNotFoundException

stacktrace的前几行是

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

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

+ Web Content
  - xyz.xhtml
  + xyz
    - xyz.xhtml
Faces servlet的servlet映射配置如下所示:

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

Facesservlet
/面孔/*
这意味着FacesServlet(将请求发送到JSF框架的Servlet)将应用于ProjectName/Faces/(当且仅当页面位于Faces文件夹结构下时)中的每个页面。如果要为站点中的每个html页面应用Faces Servlet,请将配置更改为:

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

Facesservlet
*.xhtml
编辑


我根据你的问题做了一个测试。它应该可以正常工作。确保项目已正确构建且已正确部署,如果仍然存在这些问题,请尝试更改servlet映射配置。

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

您可以发布stacktrace相关的代码吗?@HunterMcMillen:我没有任何代码。当我将文件放在目录中并使用新路径时,我得到了这个错误…请将您的文件夹结构用于分析问题,并将您的web.xml配置用于Faces Servlet映射。@Luigimendoza:您的意思是需要web.xml和Faces-config.xml文件的内容?我不需要,我不需要显示,因为当我没有文件夹时,项目工作正常…@FahimParkar我想我的回答解释了我在评论中不能问的问题。没有一个文件夹被称为faces这样。。。我有您提到的目录…然后通过更改servlet映射配置尝试建议的解决方案。即使不更改servlet映射,它也应该可以工作,剩下的唯一可能是OP将文件放在错误的目录中(可能是WEB-INF),或者应用程序服务器没有自动发布资源。@FahimParkar答案已更新。作为最后一个资源,您可以通过电子邮件与我联系以解决问题(注意:这将超出StackOverflow范围)。