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

时间:2013-06-11 14:29:55

标签: java batch-file path directory

如何从批处理文件启动.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的文件路径中进行硬编码?

1 个答案:

答案 0 :(得分:0)

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

有关

的详细信息,请参阅https://stackoverflow.com/a/320595/53897
return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());