我将一些对象存储在文件中,并且在Netbeans控制台中一切正常。但是当我通过命令行运行JAR(java -jar myapp.jar)时,我得到了这个:
我应该在哪里放置文件,以便能够通过命令行运行应用程序?
答案 0 :(得分:3)
答案取决于您是否要写入文件......
确保文件相对于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
访问这些资源。
但这会使资源成为只读。