我正在使用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使用/作为我的工作目录?
答案 0 :(得分:1)
所以我确定了问题。 Tomcat,当作为服务执行时(CentOS:systemctl启动tomcat),如果没有设置,WorkingDirectory默认为root。
通过编辑/ etc / systemd / system中的tomcat.service文件并在[Service]部分下添加以下内容:
WorkingDirectory=/opt/tomcat
我能够移动第三方库所写的目录。