Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在Java程序中更改文件权限_Java_Linux - Fatal编程技术网

Can';t在Java程序中更改文件权限

Can';t在Java程序中更改文件权限,java,linux,Java,Linux,我有一个Java程序,它在运行时将一些可执行文件提取到一个特定的文件夹,并尝试运行它们。当然,在运行可执行文件之前,需要更改其权限。为此,我使用以下代码: public static void changePermissions(String filename,String path){ String[] cmd=new String[3]; cmd[0]="chmod"; cmd[1]="u+x"; cmd[2]=filename; BetterRunP

我有一个Java程序,它在运行时将一些可执行文件提取到一个特定的文件夹,并尝试运行它们。当然,在运行可执行文件之前,需要更改其权限。为此,我使用以下代码:

public static void changePermissions(String filename,String path){
    String[] cmd=new String[3];
    cmd[0]="chmod";
    cmd[1]="u+x";
    cmd[2]=filename;
    BetterRunProcess process=new BetterRunProcess();
    process.runProcessBuilderInDifferentDirectory(cmd,path,1,0,0,"");
}
在上面的代码段中,变量path包含可执行文件的路径,filename是可执行文件的名称。该行:

process.runProcessBuilderInDifferentDirectory(cmd,path,1,0,0,"");
执行命令“chmod u+x…”。在我自己的计算机上,代码工作正常,但当我在其他人的计算机上运行它时,会抛出以下错误:

chmod: changing permissions of deviceQuery.out. Operation not permitted. 
有人能找出这背后的问题吗

这里还有一些代码,可能会有帮助

public void runProcessBuilderInDifferentDirectory(String[] cmd,String path,int printToConsole,int printToExternalFile,int append,String fileName){
    ProcessBuilder builder;
    if(cmd.length==1)   builder=new ProcessBuilder(cmd[0]);
    else if(cmd.length==2)  builder=new ProcessBuilder(cmd[0],cmd[1]);
    else if(cmd.length==3)  builder=new ProcessBuilder(cmd[0],cmd[1],cmd[2]);
    else if(cmd.length==4)  builder=new ProcessBuilder(cmd[0],cmd[1],cmd[2],cmd[3]);
    else    builder=new ProcessBuilder(cmd[0],cmd[1],cmd[2],cmd[3],cmd[4]);

    builder.directory(new File(path));
    try {
        Process pr=builder.start();
        if(printToConsole==1) printToConsole(pr);
        if(printToExternalFile==1) printToExternalFile(pr,fileName,append);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

谢谢

从拥有该文件权限的用户处运行java代码。

什么是
更好的未处理
以及
runProcessBuilderInDifferentDirectory
的源代码在哪里?您看到的是
chmod
本身打印的错误,因此显然java部分确实正确执行了
chmod
命令,但是如果你在另一个人的计算机上运行相同的命令(使用与执行java程序的用户相同的用户),你应该会得到相同的错误。我已经添加了它。@HuguesMoreau你能详细介绍一下吗?@Jamil说我现在没有其他机器,但当我有了,我会更新你。谢谢