0

我已经MyApp.appJar Bundler. 因为我有一个外部 jar,lib/AutoUpdate.jar它与 jar 在同一文件夹路径中MyApp.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()命令视图?

4

1 回答 1

0

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;
于 2013-08-07T23:13:21.540 回答