如何分发应用程序中不在jar文件中的其他文件?例如,http://www.javabeginner.com/java-swing/java-swing-shuffle-game处的申请。下载包含Shuffle.jar,Shuffle.bat,Score.dat以及包含3个图像的图像文件夹。我可以看到可能直接将图像放在Shuffle.jar中,但你不想将Score.dat放在jar文件中,因为它会改变。有什么地方你可以在jnlp中识别这种类型的文件吗?
答案 0 :(得分:2)
非java文件应存储为资源。对于更改的文件,您还将原始文件或模板文件也存储在jar中作为资源。程序启动时,您可以检查本地系统以查看该文件是否存在。如果不是,则通过从JAR资源复制模板文件来创建本地文件。如果该文件已存在,则按原样使用。
要将文件保存到本地系统,即使在沙箱(无符号)中运行,也可以使用PersistenceService
(javadoc / example)。如果你的java应用程序已签名,那么你可以使用常规的File apis将文件写入本地机器,例如在用户主文件夹下的“.yameame”子文件夹中。
答案 1 :(得分:0)
您可以将所有这些文件(分数文件除外)放在jar文件中,并使用资源加载加载内容。
答案 2 :(得分:0)
我刚刚删除并重新开始我的回复两次,每次都改变我的回答;这令人困惑,需要更多澄清。
您确定应用程序应该是Web Start应用程序吗?在您链接到的网站上,它似乎不是。您是否尝试将未设计为Web Start应用程序的应用程序更改为可以作为Web Start的应用程序?
如果它不是您的标记所暗示的Web Start应用程序,则此问题是开放式的。你可以用100种不同的方式分发它。
如果您确实尝试将其转换为Web Start应用程序,则可以先将图像打包到jar中,如果您只是从那里读取而不是从File()中读取它们,这将减轻您的第一次头痛。如果它将是Web Start,那么您需要决定如何保持分数。在决定如何处理之前,你必须决定评分系统是什么样的;将所有分数保存在托管Web Start应用程序的网站上吗?那部分仍然是本地的吗?如果您想要访问本地文件系统,则需要对jar进行签名,然后您可以将score.dat提取到文件系统,并在最终用户接受时随意执行任何操作。
你需要先弄清楚自己想要做什么,或者至少要清楚一点,如果你已经知道的比我们所知道的还多。