在Java/Springboot-Tomcat中创建文件时出现权限被拒绝错误

在Java/Springboot-Tomcat中创建文件时出现权限被拒绝错误,java,linux,spring,spring-boot,tomcat,Java,Linux,Spring,Spring Boot,Tomcat,我试图在Java/SpringBoot中创建一个文件,并使用FileWriter方法对其进行写入。 下面是我的代码 String filename = file.csv; LOGGER.info("Creating File CSV"); File file = new File(filename); Boolean Isexists =file.e

我试图在Java/SpringBoot中创建一个文件,并使用FileWriter方法对其进行写入。 下面是我的代码

                String filename = file.csv;
                LOGGER.info("Creating File CSV");
                File file = new File(filename);
                Boolean Isexists =file.exists();
                boolean isexistsabs = file.getAbsoluteFile().exists();
                LOGGER.info("CSV File Exists? : "+Isexists);
                LOGGER.info("CSV File ABSExists? : "+isexistsabs);
                boolean setwritable = file.setWritable(true);
                LOGGER.info("SetWritable CSV Output : "+Boolean.toString(setwritable));
                boolean setExecutable = file.setExecutable(true);
                LOGGER.info("SetExecutable CSV Output : "+Boolean.toString(setExecutable));
                LOGGER.info("before file Writer CSV");
                FileWriter filewriter = new FileWriter(filename);
                LOGGER.info("after file Writer CSV");
                LOGGER.info("Writing File CSV");
                String content ="Some CSV Content";
                filewriter.write(content);
                LOGGER.info("Written to File CSV");
                filewriter.close();
                LOGGER.info("Closing File CSV");
当我在本地系统中执行代码时,它正在工作,下面是代码的日志

2020-07-28 00:56:17.204  INFO 15956 --- Controller       : Creating File CSV
2020-07-28 00:56:17.205  INFO 15956 --- Controller       : CSV File Exists? : true
2020-07-28 00:56:17.206  INFO 15956 --- Controller       : CSV File ABSExists? : true
2020-07-28 00:56:17.206  INFO 15956 --- Controller       : SetWritable CSV Output : true
2020-07-28 00:56:17.207  INFO 15956 --- Controller       : SetExecutable CSV Output : true
2020-07-28 00:56:17.207  INFO 15956 --- Controller       : before file Writer CSV
2020-07-28 00:56:17.208  INFO 15956 --- Controller       : after file Writer CSV
2020-07-28 00:56:17.209  INFO 15956 --- Controller       : Writing File CSV
2020-07-28 00:56:17.209  INFO 15956 --- Controller       : Written to File CSV
2020-07-28 00:56:17.210  INFO 15956 --- Controller       : Closing File CSV
但是,当我在部署到tomcat服务器后执行相同操作时,下面是我收到的日志/错误

2020-07-27 14:34:15.465  INFO 17902 --- Controller       : Creating File CSV
2020-07-27 14:34:15.465  INFO 17902 --- Controller       : CSV File Exists? : false
2020-07-27 14:34:15.465  INFO 17902 --- Controller       : CSV File ABSExists? : false
2020-07-27 14:34:15.466  INFO 17902 --- Controller       : SetWritable CSV Output : false
2020-07-27 14:34:15.466  INFO 17902 --- Controller       : SetExecutable CSV Output : false
2020-07-27 14:34:15.466  INFO 17902 --- Controller       : before file Writer CSV
2020-07-27 14:34:15.488 ERROR 17902 --- [http-nio-8080-exec-31] o.s.b.w.servlet.support.ErrorPageFilter  : Forwarding to error page from request [/api/getFlighPlanCSV] due to exception [file.csv (Permission denied)]

java.io.FileNotFoundException: file.csv (Permission denied)
    at java.base/java.io.FileOutputStream.open0(Native Method) ~[na:na]
    at java.base/java.io.FileOutputStream.open(FileOutputStream.java:291) ~[na:na]
    at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:234) ~[na:na]
    at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:123) ~[na:na]
    at java.base/java.io.FileWriter.<init>(FileWriter.java:66) ~[na:na]
    at com.aiknights.com.rapidviewmain.controller.SiteInspectionController.DownloadFlightPlan(SiteInspectionController.java:175) ~[classes/:0.0.1-SNAPSHOT]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.1.RELEASE.jar:5.2.1.RELEASE]
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE]
我会回答任何关于设置和代码的更多细节的问题


非常感谢您提供的任何帮助,因为我已经花了太多的时间来处理这个问题。

请确保您已经阅读并执行了对所有父目录的访问

例如:

chmod o+x /opt

确保您还具有对所有父目录的读取和执行访问权限

例如:

chmod o+x /opt

您需要查看应用程序使用的用户,并确保其具有访问该文件的权限。这显然是unix文件系统权限问题,代码没有问题。您可能遗漏了一些内容。您需要查看应用程序使用的用户,并确保其具有访问该文件的权限。这显然是unix文件系统权限问题,代码没有问题。你可能遗漏了什么。