Java 在servlet中找不到文件,即使通过context.getRealPath获取路径? 提要
给出了服务器端驻留在servlet(Tomcat是容器)上的以下(节略)代码。这是一个GWT应用程序,尽管这应该是无关的(我认为)Java 在servlet中找不到文件,即使通过context.getRealPath获取路径? 提要,java,gwt,tomcat,servlets,file-io,Java,Gwt,Tomcat,Servlets,File Io,给出了服务器端驻留在servlet(Tomcat是容器)上的以下(节略)代码。这是一个GWT应用程序,尽管这应该是无关的(我认为) TestCaseGenerator是项目war/WEB-INF/lib文件夹中jar中的一个类,它作为外部库添加到GWT项目中 问题 执行testCaseGenerator.generateTestCase()时,无法使用dataFile创建newlinenumberreader(newfilereader(dataFile)),将抛出一个FileNotFoundE
TestCaseGenerator
是项目war/WEB-INF/lib
文件夹中jar中的一个类,它作为外部库添加到GWT项目中
问题
执行testCaseGenerator.generateTestCase()
时,无法使用dataFile
创建newlinenumberreader(newfilereader(dataFile))
,将抛出一个FileNotFoundException
我已经验证了数据文件路径
的字符串
值是否正确,是否包含我需要读取的服务器上文件的正确实际路径,以及数据文件
是否为空
。我还验证了TestCaseGenerator
在GWT应用程序之外从命令行调用时运行良好
我不确定为什么TestCaseGenerator
不能使用我传递给它的文件
对象,因为我传递的是文件的真实文件路径。我可以想出一些替代方案来解决这个问题,但现在我真的很好奇为什么它找不到文件
提前感谢您提供的任何见解 解决
我愚蠢地忽略了在我的build.xml
的war
目标中包含dir/dataFile.txt
,因此事实上该文件没有包含在war
包中,因此从未放在Tomcat容器中
<include name="dir/**" />
我还误解了context.getRealPath(“/WEB-INF/dir/dataFile.txt”)代码>实际退货;。从
获取与给定虚拟路径对应的实际路径。对于
例如,如果path等于/index.html,此方法将返回
服务器文件系统上的绝对文件路径,请求
表单http://index.html将是
映射,其中对应于此文件的上下文路径
ServletContext
因此,即使
getRealPath
返回一个路径值,也不一定意味着文件位于该实际路径 您能打印出dataFilePath吗?FileNotFoundException
的错误消息是什么?这不只是“拒绝许可”吗?至少解释一下投票被否决的原因:|
<include name="dir/**" />