我有一个servlet,在WEB-INF / lib目录下我有一个jar文件。这个罐子是由我正在研究的项目制成的。项目中的代码执行正常,并在其主目录中使用txt文件。调用这些文件的Java代码不需要添加任何路径,IE:new FileReader(“file.txt”)。
问题是当我调用servlet时它不断抛出异常,它无法找到jar所需的那些txt文件。到目前为止,我已将txt文件放在以下位置,但没有运气:
我想我已经用尽了txt文件可以去的所有可能的地方。 jar文件在哪里寻找它们?
谢谢
答案 0 :(得分:1)
看看this post。
当您将其作为项目执行时,它会起作用,因为该相对路径实际上对文件系统有效。但是,一旦将应用程序打包为JAR,读取文件的常用方法将失败,因为您的文件 in JAR,而文件系统只是另一个文件。要阅读JAR中打包的资源,您应该根据需要使用Class#getResource()
或Class#getResourceAsStream()
。
您还可以查看mindprod.com上的Java Glosarry对这些内容的评论:
答案 1 :(得分:0)
我想我已经用尽了txt文件可以去的所有可能的地方。 jar文件在哪里寻找它们?
不,你没有。将文件放在Tomcat分发中的/bin
目录中。这个结构:
new FileReader("file.txt")
在进程当前目录中搜索文件。启动Tomcat后,它恰好是包含所有启动脚本的二进制目录(非常不幸的地方)。
那就是说,你应该考虑重写这个文件读取打开并使路径可配置,因为在大多数环境中读取(并且肯定写入)/bin
目录应该是禁止的,这是一种非常糟糕的做法。
答案 2 :(得分:0)
我认为答案取决于Tomcat的启动方式,但默认目录通常是Tomcat根目录。
在servlet中尝试以下操作:
ServletContext context = getServletConfig().getServletContext ();
String fullPath = context.getRealPath ("file.txt");