Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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
Java Unix可执行文件在复制时更改为TextEdit文档_Java_Macos_Copy_Executable_Apache Commons - Fatal编程技术网

Java Unix可执行文件在复制时更改为TextEdit文档

Java Unix可执行文件在复制时更改为TextEdit文档,java,macos,copy,executable,apache-commons,Java,Macos,Copy,Executable,Apache Commons,我有下面的脚本,你可以在下面看到。此Java脚本的功能是复制Mac应用程序,其中一个应用程序与Java程序放在同一文件夹中。它首先找到应用程序和java程序所在的文件夹的路径。然后,它将所有内容复制到Mac设备上的documents文件夹中。完成后,它应该运行已复制到documents文件夹的应用程序 唯一的问题是它无法做到这一点。原因是,每当它复制应用程序时,mac应用程序内容中的JavaAppLauncher已从unix可执行文件更改为常规文本编辑文档,因此无法实际启动应用程序。但是,如果我

我有下面的脚本,你可以在下面看到。此Java脚本的功能是复制Mac应用程序,其中一个应用程序与Java程序放在同一文件夹中。它首先找到应用程序和java程序所在的文件夹的路径。然后,它将所有内容复制到Mac设备上的documents文件夹中。完成后,它应该运行已复制到documents文件夹的应用程序

唯一的问题是它无法做到这一点。原因是,每当它复制应用程序时,mac应用程序内容中的
JavaAppLauncher
已从unix可执行文件更改为常规文本编辑文档,因此无法实际启动应用程序。但是,如果我通过自己复制应用程序而不是使用java程序来手动复制应用程序,那么就没有问题了。我不确定这个问题是由我的代码引起的,还是只是一个一般性的问题

重要提示:当我只运行常规的非复制版本时,.app确实可以工作,但一旦它是通过Java复制的复制版本,它就无法工作,因为Unix可执行文件的更改

public class LaunchProg {

    static String usernameMac2 = System.getProperty("user.name");

    static File propFile = new File (".");
    static String pathString = propFile.getAbsolutePath();
    static int pathhLeng = pathString.length();
    static int pathReaLeng = pathhLeng -1;
    static String filNamMac = "AppNam.app";
    static String pFPathRelMac = pathString.substring(0,pathReaLeng);

    private static final File fSourceMac = new File(pFPathRelMac);
    private static final File AppFold =  new File ("/Users/" + usernameMac2 + "/Documents");

    static File fileCret = new File("fCret.txt");

    public static void main(String[] args) throws IOException {

        System.out.println(pFPathRelMac);
        launchMac();

    }

    static void launchMac() throws IOException {

        if (!fileCret.exists()){
            try {
                FileUtils.copyDirectory(fSourceMac, AppFold);
                PrintWriter pFW = new PrintWriter(fileCret);
                pFW.println("Created File For Check");
                pFW.close();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                String command = "open /Users/" + usernameMac2 + "/Documents/AppNam.app";
                Process staAp2 = Runtime.getRuntime().exec(command);
            }

        }  
    }
}

我怀疑
cp
命令复制权限,而您的复制功能没有。因此,该文件的副本没有“执行”权限。这就是它显示为文本编辑文档的原因,也是它无法运行的原因。尝试将“执行”权限添加到文件副本。@MikeNakis我很欣赏您的输入,我解决了这个问题,没有复制文件,只是移动了文件。使用以下命令