Tomcat部署文件路径(用于Java I/O进程)
我设法在Spring项目中使用包含路径()的Tomcat部署文件路径(用于Java I/O进程),java,spring,file-io,deployment,tomcat7,Java,Spring,File Io,Deployment,Tomcat7,我设法在Spring项目中使用包含路径()的.properties文件为不在项目中的文件(然后是WAR文件)实现了一个简单的文件I/O,现在我需要在服务器中执行 以前,当我将文件包含在WAR文件中时,我可以使用路径在Tomcat服务器中访问它们 /home/my_username/tomcat7/webapps/my_project/WEB-INF/classes/ 但是现在文件不在WAR文件中,我只是把它们放在webapps文件夹旁边 我的Tomcat 7文件夹的结构是: tomcat7 |
.properties
文件为不在项目中的文件(然后是WAR
文件)实现了一个简单的文件I/O,现在我需要在服务器中执行
以前,当我将文件包含在WAR
文件中时,我可以使用路径在Tomcat服务器中访问它们
/home/my_username/tomcat7/webapps/my_project/WEB-INF/classes/
但是现在文件不在WAR
文件中,我只是把它们放在webapps
文件夹旁边
我的Tomcat 7文件夹的结构是:
tomcat7
|----> bin
|----> conf
|----> logs
|----> resources*
|----> temp
|----> webapps
|----\----> springapp.war*
|----> work
其中/resources
是WAR
文件I/O中所需的文件夹
我的.properties
文件具有:
dir.server=home/my_username/tomcat7/resources
// or
dir.server=/home/my_username/tomcat7/resources
但是错误显示(来自我的catalina.out
文件):
java.io.FileNotFoundException:/home/my_username/tomcat7/resources/my_file.file(没有这样的文件或目录)
在java.io.FileInputStream.open(本机方法)
位于java.io.FileInputStream。(FileInputStream.java:120)
位于java.io.FileInputStream。(FileInputStream.java:79)
读取(SerializationHelper.java:270)
有没有合适的方法来声明文件路径,或者我必须更改文件I/O的实现?您获得
FileNotFoundException
的原因是,您部署的war
必须位于另一个系统或类似系统上,该系统不包含相同的确切路径。您应该在程序中使用这行代码
String tomcatPath = System.getProperty("catalina.base")
这将返回该特定系统中tomcat文件夹的路径。因此,如果部署了war
的系统具有不同的tomcat路径,则将返回该路径。然后,通过将字符串附加到路径,可以访问resources文件夹中的属性文件
String tomcatPath = System.getProperty("catalina.base");
String propertiesFilePath = tomcatPath + "/resources";
要访问特定文件,可以使用以下代码:
String filePath = propertiesFilePath+"my_file.file";
你应该看看:
希望有帮助……) 肯定是从斜线开始的。还需要设置正确的递归
chown owner:group
和chmod a+rw
权限。在FileNotFoundException上,您可能希望尝试将路径展开到根目录,以找到正确的有问题的目录/home/my_username
左右。如果我理解正确,我需要将/resources
的权限设置为755
(递归)?是的,如果这是问题;如果您只读取chmod a+r
,则读取权限应足够。它仍然会给出空指针异常,但感谢您提供此信息!但是它仍然不起作用:(System.getProperty(“catalina.base”)的输出)实际上与我当前在问题中使用的文件夹相同。我是否应该将文件夹resources
移到其他位置?您是否尝试在服务器上运行getProperty
?该机器上的输出是什么?试着调试它。通常使用简单的java程序访问该文件,并看到它时遇到相同的障碍。如果是这样的话正如@Joop所提到的,系统的权限可能存在问题。
String filePath = propertiesFilePath+"my_file.file";