在 Mac 上获取 java bundler 的路径



我用Jar Bundler做了一个Mac应用程序MyApp.app。因为我有一个外部 jar,lib/AutoUpdate.jarMyApp.app位于同一文件夹路径中,我需要MyApp.app的当前路径才能运行自动更新。显然地:

System.getProperty("user.dir");

剂量不起作用。我也试过:

String path = System.getProperty("user.dir");
if(path.contains("/MyApp.app")){
   int i = path.indexOf("/MyApp.app");
   path = path.substring(0,i);
}

但这似乎也是MyApp.app的错误路径.任何想法如何获得正确的路径,或者我是否可以至少调试MyApp.app以获取System.out.println()命令的视图?

如果位置在给定区域中,请尝试Applications/MyApp.app位置,或者您可以使用Unix命令在所需目录处启动jar(而不是将其硬编码到.jar文件中(。

-x用于可执行文件,但应用程序通常也可以使用 -d 并且都使用 -e 命令。

要实现,请将AutoUpdater.jar与其他.jar文件放在 MyApp.app/contents/resources/java 中。AutoUpdater.jar应如下所示:

main()
{
    if [ -x Applications/MyApp.app];then
        cd Applications/MyApp.app/contents/resources/java
        java AutoUpdater.jar
        wait 86400
        main
    else
        wait 3600
    fi
}
main

下一段代码将尝试查看应用是否每小时存在一次,如果保持运行状态,则每天更新。

download()
{
    cd Applications/MyApp.app/contents/resources/java
    if ! curl -LO http://your.url.that.it.is.updating.from;then
        echo "Failed to download"
        wait 3600
    else
        wait 86400
    fi
}

您可以通过将其添加到最后一行之前的代码中来完全删除AutoUpdate.jar。替换此内容:

java AutoUpdater.jar
wait 86400

。有了这个:

download

这仅适用于JarBundler应用程序。您应该使用它来替换当前.jar文件。

if ! curl -LO http://cbukk.it/craftbukkit-dev.jar;

作为旁注,命令user.dir通常/Users/yourName为路径。您可以更改此设置以在JarBundler中使用全局标识符,如下所示:

String path = com.mycommpany.myapp;

最新更新