gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:39:19 24 4
gpt4 key购买 nike

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

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

在Contents/Resources/中有一个config目录。

执行时,我得到了这个奇怪的行为:

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)

最佳答案

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

On UNIX systems, a relative pathname is made absolute by resolving it against the current user directory.

虽然javadocs指出

By default the classes in the java.io package always resolve relative pathnames against the current user directory. This directory is named by the system property user.dir, and is typically the directory in which the Java virtual machine was invoked.

this bug report声明“更简单”的 setter/getter (不是“绝对”)对于相对路径将解决虚拟机被调用的路径。

关于java - Ant Mac OS X Appbundler 当前目录路径问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25267364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com