Ant Mac OS X Appbundler当前目录路径问题

时间:2014-08-12 14:47:47

标签: java macos ant app-bundle working-directory

我正在尝试将Java应用程序编译为Mac OS X应用程序包。我添加以下设置来设置当前工作目录:

<bundleapp...>
    ...
    <option value="-Duser.dir=$APP_ROOT/Contents/Resources"/>
</bundleapp>

在Contents / Resources /中有一个配置目录。

执行时,我会遇到这种奇怪的行为:

new File("config/").exists()返回false

new File("config/").getAbsolutePath()返回/path/to/bundled/app/MyApp.app/Contents/Resources/config

new File("config/").getAbsoluteFile().exists()返回true

我不知道为什么会这样,我想阻止在我的代码中到处添加getAbsoluteFile()。

对此有何想法?

(注意:我使用的是Oracle JDK 8)

1 个答案:

答案 0 :(得分:1)

getAbsolutePath解析当前user.dir属性的相对路径。来自javadocs

  

在UNIX系统上,通过解析相对路径名使其成为绝对路径名   针对当前用户目录。

虽然javadocs说明了

  

默认情况下,java.io包中的类总是解析相对的   针对当前用户目录的路径名。该目录已命名   由系统属性user.dir,通常是在中的目录   调用了Java虚拟机。

this bug report表示&#34;更简单&#34;吸气剂(不是&#34;绝对&#34;) 相对路径将解决 调用虚拟机的路径。