0

从批处理文件启动 .jar 时如何正确引用目录?

我正在尝试从 .bat 启动 jar 文件。我的代码做的第一件事就是打开并从文件中读取。我像这样引用文件:

final ArrayList<EmailAccount> emailList = FileIO.getListOfAccountsFromFile(".\\EmailList\\list.txt");

如果批处理文件与我的 jar 位于同一目录中,则一切正常。但是,如果我将批处理文件放在其他地方并尝试运行它(就像我打算让它工作一样),程序认为我正在尝试引用

".bat directory"\EmailList\list.txt

代替

".jar directory"\EmailList\list.txt

并提出了一个 fileNotFoundException。

有什么方法可以从不同的目录运行我的批处理文件,同时正确引用与 jar 相关的文件,而无需在 jar 的文件路径中进行硬编码?

4

1 回答 1

0

您可以向 JVM 询问给定类的位置。如果您知道它在您引用的 jar 中,那么您可以提取 jar 文件的位置,然后构造相对于该 jar 文件的文件对象。

有关详细信息,请参阅https://stackoverflow.com/a/320595/53897

return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());
于 2013-06-11T14:34:35.643 回答