Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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
Tomcat部署文件路径(用于Java I/O进程)_Java_Spring_File Io_Deployment_Tomcat7 - Fatal编程技术网

Tomcat部署文件路径(用于Java I/O进程)

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 |

我设法在Spring项目中使用包含路径()的
.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";