【发布时间】:2015-06-22 14:42:10
【问题描述】:
我用 Java 编写了一个程序,并使用 Netbeans 将其打包为 Mac 应用程序。它具有典型的 Java、MacOS、Resources 和 Plugins 文件夹,并且运行良好。问题是我的程序有一个保存功能,无论何时使用,它都会将文件保存到计算机的用户目录,而不是程序本身运行的目录——Java 文件夹。
过去我使用包含这些行的自定义可执行文件解决了这个问题
# Set the working directory
DIR=$(cd "$(dirname "$0")"; pwd)
cd $DIR
但由于 Netbeans 现在创建可执行文件并以某种不可读的方式对其进行编码,所以这不是一个选项。我会使用旧的,但 Netbeans 增加了将 JRE 与程序捆绑在一起的好处,所以我不得不在保存在正确的位置或捆绑 JRE 之间做出选择。
有人知道如何更改打包程序的工作目录吗?
•••••••••••••••••••••••••••••••••••••••••••••• ••••••••••••••••••••••••••••••••••••••••••••••••• ••••••••••••••••••••••••••••
编辑:
我听取了 Tyler 的建议,决定在程序本身中找到我想要的目录,而不是尝试用脚本更改 PWD。p>
假设您通过双击或使用终端/cmd 来运行 Jar 文件(这仅适用于直接运行,而不是通过 ANT 或 IDE)。这将为您提供您的 Jar 所在的目录:
String path1 = MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();
String path2 = (new File(path1)).getParentFile().getPath();
String PWD = URLDecoder.decode(path2, "UTF-8");
- 第一行获取 Jar 文件的路径。
- 第二行 从末尾删除 Jar 的名称,留下你 它所在的目录。
- 第三行占特殊字符 比如空格。
【问题讨论】:
-
您不应依赖当前目录来确定文件的保存位置。使用环境变量或其他配置选项。
-
你能举个例子吗?我对这种事情不太熟悉。
标签: java netbeans bundle executable