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

时间:2017-02-05 14:47:36

标签: java macos copy executable apache-commons

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

唯一的问题是它无法这样做。原因是无论何时复制应用程序,在mac应用程序内容中找到的JavaAppLauncher已从unix可执行文件更改为常规TextEdit文档,因此无法实际启动应用程序。但是,如果我通过自己复制并不使用java程序手动复制应用程序,则没有问题。我不确定这个问题是由我的代码引起的,还是只是一般情况?

重要提示,当我运行常规非复制版本时,.app确实有效,但只要它是复制版本,由于Unix可执行文件的更改,它就不能通过Java复制了。

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);
            }

        }  
    }
}

0 个答案:

没有答案