처음에는 읽기 권한 만있는 xml 파일이 linux에 있습니다. 파일 내용을 업데이트해야합니다. 그래서 Java를 통해 파일 사용 권한 (wx)을 부여하려고합니다. 여기 셸 명령을 사용하여 파일 사용 권한 (rwx) 부여 java
코드이다File pomFile = new File(wsPath + "pom.xml");
logger.info("Before change: Is Execute allow : " + pomFile.canExecute()); //false
logger.info("Before change: Is Write allow : " + pomFile.canWrite()); //false
logger.info("Before change: Is Read allow : " + pomFile.canRead()); //true
String command = "sudo chmod -R ugo+wx " + wsPath + "pom.xml";
Process p = Runtime.getRuntime().exec(command);
logger.info("After change: Is Execute allow : " + pomFile.canExecute()); //false
logger.info("After change: Is Write allow : " + pomFile.canWrite()); //false
logger.info("After change: Is Read allow : " + pomFile.canRead()); //true
InputStream inputStream = getClass().getResourceAsStream("/output-pom.xml");
String packageName=AppConstants.PACKAGE_DEFAULT+"."+client+"."+projectName;
String pomContent=IOUtils.toString(inputStream);
pomContent=pomContent.replace("<groupId>PACKAGE_NAME</groupId>","<groupId>"+packageName+"</groupId>");
pomContent=pomContent.replace("PROJECT_NAME", projectName);
FileWriter writer = new FileWriter(pomFile, false);
writer.write(pomContent);
writer.close();
같은 권한을 설정 한 후에 pomFile.canWrite() 및 pomFile.canExecute()는 false를 나타낸다. 또한 FileWriter가 예외를 던지고 있습니다. 이 문제를 해결할 수있는 방법은 무엇입니까?
java.io.FileNotFoundException: wsPath/pom.xml (Permission denied)
at java.io.FileOutputStream.open0(Native Method) ~[na:1.8.0_45]
at java.io.FileOutputStream.open(FileOutputStream.java:270) ~[na:1.8.0_45]
at java.io.FileOutputStream.<init>(FileOutputStream.java:213) ~[na:1.8.0_45]
at java.io.FileWriter.<init>(FileWriter.java:107) ~[na:1.8.0_45]
at com.apptium.eportal.servlet.CreateProjectServlet.doPost(CreateProjectServlet.java:179) ~[classes/:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) [servlet-api.jar:na]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) [servlet-api.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) [tomcat-websocket.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) [catalina.jar:8.0.32]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) [catalina.jar:8.0.32]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) [catalina.jar:8.0.32]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) [catalina.jar:8.0.32]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) [catalina.jar:8.0.32]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) [catalina.jar:8.0.32]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.0.32]
at ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:189) [logback-access-1.1.2.jar:na]
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:676) [catalina.jar:8.0.32]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) [catalina.jar:8.0.32]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) [catalina.jar:8.0.32]
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) [tomcat-coyote.jar:8.0.32]
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) [tomcat-coyote.jar:8.0.32]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) [tomcat-coyote.jar:8.0.32]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) [tomcat-coyote.jar:8.0.32]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.0.32]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
종료를 확인 했습니까? p의 코드? 그것은 무엇을 말하는가? 파일의 권한을 변경하려면 상위 디렉토리에 대한 실행 권한이 필요합니다. – Hok