我应该把我的文件放在哪里以便在我 运行 jar 时能够访问它们?

Where should i place my files in order to be able to access them when i run the jar?

我将一些对象存储在文件中,在 Netbeans 控制台中一切正常。但是当我通过命令行 运行 JAR (java -jar myapp.jar) 我得到这个:

我应该将文件放在哪里才能通过命令行 运行 应用程序?

答案将取决于您是否要写入文件...

你可以...

确保文件相对于Jar 文件放置并使用相对路径。这样做的问题是,如果执行上下文与存储 jar 和文件的目录不同,您将无法再次找到它们...

这也将取决于您的构建过程,以确保将任何需要的文件复制到 Jar 的构建位置

你可以...

将文件放在一个众所周知的位置,例如,在 Windows 上您可以使用 {user.home}/AppData/Local/{application name} 或在 Mac 上您可以使用 {user.home}/Library/Application Support/{application name} 并放置文件在这里,那么你可以使用文件的绝对路径

这可能会成为安装问题,因为您需要确保在安装应用程序时将任何所需文件复制到所需位置。

如果文件是在运行时自动生成的,那么你只需要确保目录存在,如果不存在则创建它们

你可以...

将文件存储在 Jar 上下文中(也称为嵌入式资源),您执行此操作的方式将取决于您的 IDE 和构建过程,例如,在 Netbeans 中,您可以将文件复制到src 目录,它们将自动包含在生成的 Jar 文件中。我相信 Eclipse 可以以同样的方式工作。但是,如果您使用的是 Maven,则需要将文件放入 resources 目录。

然后您将根据需要使用 Class#getResource or Class#getResourceAsStream 访问这些资源。

然而,这将使资源变为只读。