java - 引用 root 的 Tomcat servlet 相对路径

标签 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 没有写入根目录的权限。

该代码是创建缓存文件的第三方库,因此我无法仅更改为绝对路径。

是什么导致 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/

相关文章:

c - 如何为二进制文件和 ascii 文件定义 EOF

c# - 互连流

tomcat - Amazon EC2 上的 JVM 调优

debugging - 当服务器有多个虚拟主机运行时如何远程调试 Tomcat (JPDA)

Java - 如何阻止用户输入整数以外的内容?

java - Mongodb 在 Java 中将 .Net GUID 转换为 BinData

java - 使用scanner.nextLine()

java - 如果我对对象的引用超过 32 位所能解释的,会发生什么情况?

file - 如何在 bash 文件中提供密码以在终端中执行

java - Netbeans/Tomcat/Jersey 两次加载 Spring 上下文