如何从批处理文件启动.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的文件路径中进行硬编码?
答案 0 :(得分:0)
您可以向JVM询问给定类的位置。如果知道它在你引用的jar中,那么你可以提取jar文件的位置,然后构建相对于它的文件对象。
有关
的详细信息,请参阅https://stackoverflow.com/a/320595/53897return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());