我正在使用 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 没有写入根目录的权限。
该代码是创建缓存文件的第三方库,因此我无法仅更改为绝对路径。
是什么导致 Tomcat 使用/作为我的工作目录?
最佳答案
所以我确定了这个问题。 Tomcat,当作为服务执行时(CentOS:systemctl start tomcat),如果未设置,WorkingDirectory 默认为 root。
通过编辑/etc/systemd/system 中的 tomcat.service 文件并在 [Service] 部分下添加以下内容:
WorkingDirectory=/opt/tomcat
我能够移动第三方库正在写入的目录。
关于java - 引用 root 的 Tomcat servlet 相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44677790/