设置主页或工作目录

时间:2013-03-11 07:41:08

标签: java

我有一个java应用程序并将其捆绑为App.jar。我使用了一些第三方工具(我们称之为NumberGenerator)。 App.jar启动一个进程并调用NumberGenerator来获取输出。为了引用可执行文件,我使用了相对路径new File("lib/NumberGenerator.exe"),它运行良好。

现在在Mac上,我使用this捆绑了应用程序,它会自动生成应用程序启动器。当我通过单击启动器运行时,它会启动应用程序。但它将主目录设置为~,即/Users/Jatin,而不是jar文件所在的位置。因此我的应用程序无法检测lib文件夹(显然因为它不在该位置)

在我的Java代码中,如何将主文件夹设置为jar所在的位置?

4 个答案:

答案 0 :(得分:2)

我遇到类似linux的问题。我不太了解osx而不是AppBundler,但在linux中我通过创建这个脚本来解决它

#!/usr/bin/env sh
java -Duser.dir=$(pwd) -jar myapp.jar

如果您设法通过双击运行脚本,它可能会有效...请参阅How to run a shell script in OS X by double-clicking?

答案 1 :(得分:2)

return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());

只需检查此帖子How to get the path of a running JAR file?

答案 2 :(得分:1)

我看到两种方法:

  • Info.plist中,指定与java.library.path相对的$JAVAROOT,如文章引用here中所述。

    <key>Java</key>
    <dict>
    ...    
        <key>Properties</key>
        <dict>
            <key>java.library.path</key>
            <string>$JAVAROOT/</string>
        </dict>
    ...    
    </dict>
    
  • 使用Java Web Start,可让您按操作系统和体系结构管理本机resources

答案 3 :(得分:0)

你可以试试这个:

System.setProperty("user.home", "your-dir");