Tomcat servlet引用根

时间:2017-06-21 13:38:19

标签: java file tomcat servlets relative-path

我正在使用Java Spring Boot并部署到Tomcat 8.1 webapp。

当我使用相对路径创建一个新的File()时,它指的是系统的绝对根。

例如,

File x = new File("./temp.txt");

System.out.println("X Path: " + x.getAbsolutePath());

输出

/./temp.txt

这是为什么?我收到了Java.nio.File.AccessDeniedException,因为Tomcat没有权限写入root。

代码是创建缓存文件的第三方库,因此我无法切换到绝对路径。

是什么导致Tomcat使用/作为我的工作目录?

1 个答案:

答案 0 :(得分:1)

所以我确定了问题。 Tomcat,当作为服务执行时(CentOS:systemctl启动tomcat),如果没有设置,WorkingDirectory默认为root。

通过编辑/ etc / systemd / system中的tomcat.service文件并在[Service]部分下添加以下内容:

WorkingDirectory=/opt/tomcat

我能够移动第三方库所写的目录。