Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在servlet中找不到文件,即使通过context.getRealPath获取路径? 提要_Java_Gwt_Tomcat_Servlets_File Io - Fatal编程技术网

Java 在servlet中找不到文件,即使通过context.getRealPath获取路径? 提要

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

给出了服务器端驻留在servlet(Tomcat是容器)上的以下(节略)代码。这是一个GWT应用程序,尽管这应该是无关的(我认为)

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/**" />