我将一些对象存储在文件中,并且在Netbeans控制台中一切正常。但是当我通过命令行(java -jar myapp.jar)运行JAR时,我得到了:
我应该在哪里放置文件以便能够通过命令行运行该应用程序?
最佳答案
答案取决于您是否要写入文件...
你可以...
确保文件相对于Jar文件放置,并使用相对路径。问题是,如果执行上下文与jar和文件的存储目录不同,则将无法再次找到它们。
这也取决于您的构建过程,以确保将所有必需的文件都放置到复制到Jar的构建位置中
你可以...
将文件放置在众所周知的位置,例如,在Windows上可以使用{user.home}/AppData/Local/{application name}
或在Mac上可以使用{user.home}/Library/Application Support/{application name}
并将文件放置在此处,然后可以使用文件的绝对路径
这很可能会成为安装问题,因为您需要确保在安装应用程序时将所有必需的文件复制到所需的位置。
如果文件是在运行时自动生成的,那么您只需要确保目录存在就可以了,如果不存在则进行设置
你可以...
将文件存储在Jar上下文(AKA嵌入式资源)中,执行此操作的方法将取决于IDE和构建过程,例如,在Netbeans中,您可以将文件复制到项目的src
目录中,将自动包含在生成的Jar文件中。我相信Eclipse可以以相同的方式工作。但是,如果您使用的是Maven,则需要将文件放入resources
目录。
然后,您可以根据需要使用Class#getResource
或Class#getResourceAsStream
访问这些资源。
但是,这将使资源变为只读。