如何更改捆绑Java程序的工作目录

时间:2015-06-22 14:42:11

标签: java netbeans bundle executable

我用Java编写了一个程序,并使用Netbeans将其打包为Mac App。它有典型的Java,MacOS,资源和插件文件夹,工作得很好。问题是我的程序有一个保存功能,无论何时使用,它都会将文件保存到计算机的用户目录,而不是程序本身运行的目录 - Java文件夹。

在过去,我使用包含行

的自定义可执行文件解决了这个问题
# Set the working directory
DIR=$(cd "$(dirname "$0")"; pwd)
cd $DIR

但是,由于Netbeans现在创建可执行文件并以某种不可读的方式对其进行编码,因此这不是一种选择。我会使用旧的,但Netbeans增加了将JRE与程序捆绑在一起的好处,因此我不得不选择保存在正确的位置或捆绑JRE。

有谁知道如何更改打包程序的工作目录?

••••••••••••••••••••••••••••••••••••••••••••••• •••••••••••••••••••••••••••••••••••••••••••••••••• ••••••••••••••••••••••••••••

编辑:

我接受了Tyler的建议并决定在程序中找到我想要的目录,而不是尝试用脚本更改PWD。

假设您通过双击或使用终端/ 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的名称,留下你的名字 目录它在。
  • 第三行占特殊字符 像空格一样。

1 个答案:

答案 0 :(得分:2)

我使用

之类的东西
System.getenv("HOME");

找到用户的主目录,而不是更改Java的工作目录。