打开位于Java jar目录中的文件,而不是当前工作目录

时间:2014-09-01 14:13:37

标签: java relative-path

我有一个在NetBeans中开发的 Java桌面应用程序,我将其压缩以分发给学生。在这个zip文件中,我有 .jar ,一个包含swing-layout jar的“lib”目录,以及一个名为“sourcefiles”的目录,其中包含程序所需的所有文本文件。

如果双击jar文件,一切正常,但从命令行java -jar MyApp.jar)运行时,只能找到“sourcefiles”目录如果你在运行命令之前首先cd到文件所在的目录,那么有些学生忘了做。显然,无法从我的代码中更改当前工作目录。假设我在 MyApp 文件夹中,“sourcefiles”的路径在我的代码中作为相对路径给出。那么我该怎么办才能从命令行运行程序而不必 cd 到包含目录?有没有东西可以添加到清单文件中?

这个问题主要面向使用Linux的学生,但在Mac上也是如此。我认为它在Windows上是一样的,但我想没有一个Windows学生从命令行运行它。

1 个答案:

答案 0 :(得分:1)

您无法更改默认目录,但可以获取运行该类的Jar的目录,并将其用作代码中的基本路径。

String jarLocation = ThisClass.class.getProtectionDomain()
                         .getCodeSource().getLocation().getPath();

从这里你可以得到jar所在的目录。很可能你想把它作为学生可以打电话的方法包装好。