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



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

如果双击jar文件,一切都会很好,但当从命令行java -jar MyApp.jar)运行时,如果在运行命令之前先cd到文件所在的目录,则只能找到"sourcefiles"目录,这是一些学生忘记做的。显然,在我的代码中无法更改当前的工作目录。"源文件"的路径在我的代码中以相对路径的形式给出,假设我在MyApp文件夹中。那么,我该怎么做才能让程序从命令行运行,而不必cd到包含目录?有什么东西可以添加到清单文件中吗?

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

您不能更改默认目录,但您可以获取类运行的Jar所在的目录,并在代码中使用该目录作为基本路径。

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

从中你可以得到jar所在的目录。很可能你会想把它包装成一个你的学生可以调用的方法。

相关内容

最新更新