【问题标题】:Where should i place my files in order to be able to access them when i run the jar?我应该把我的文件放在哪里以便在我运行 jar 时能够访问它们?
【发布时间】:2015-03-14 12:29:39
【问题描述】:

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

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

【问题讨论】:

  • 你的类需要进入一个包并且应该被称为Graph,而不是graph。
  • graph 实际上是文件名。

标签: java jar operating-system


【解决方案1】:

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

你可以...

确保文件相对于 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#getResourceClass#getResourceAsStream 访问这些资源。

这将使资源只读。

【讨论】:

    最近更新 更多