在Mac上获取java bundler的路径

时间:2013-06-30 17:27:34

标签: java jarbundler

我使用MyApp.app创建了一个Mac应用Jar Bundler。因为我有一个外部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()命令的视图?

1 个答案:

答案 0 :(得分: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;