我有以下脚本,您可以在下面看到。此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);
}
}
}
}