执行期间自爆式和重新调整jar文件

时间:2012-01-04 17:32:12

标签: java jar decompiling

我目前正在制作一个程序,为我老师的教室制作坐姿图表。我已将所有数据文件放在jar中。这些被读入并放入表中。运行程序的main函数后,它会更新文件以匹配表值。我知道我需要爆炸罐子,然后在执行期间重新调整它以编辑文件,但我找不到任何关于如何在执行期间重新开启的探索。有没有人有任何想法?

2 个答案:

答案 0 :(得分:4)

简答:

将数据文件放在二进制文件之外,并与JAR一起发送到单独的文件夹中。

长一点:

好像你正在从错误的方向接近问题。 JAR文件类似于Windows平台上的可执行文件(.exe) - 包含代码只读二进制文件。

你可以(虽然这是一个不好的做法)在JAR中放置一些资源,如数据文件,多媒体等(就像你可以在.exe内)。但更好的解决方案是将这些资源放在二进制文件之外,这样就可以在不重新编译/重建的情况下切换它们。

如果您需要在应用程序运行时动态修改资源,您基本上别无选择。数据文件必须在二进制文件之外。再一次,在运行时,您永远不会看到Windows .exe文件自行修改。

答案 1 :(得分:2)

Tomasz说得对,以下是不好的做法,但这是可能的。

类路径的内容在引导期间被读入内存,但文件是可修改的,但在初始化后它们的更改不会反映出来。我建议将数据放入另一个文件中,与您的类文件分开,但如果您坚持将它们保持在一起,您可以查看:

  • JarInputStream或ZipInputStream来读取JAR文件的内容
  • 获取相应文件的JarEntry
  • 根据需要阅读和修改内容
  • JarOutputStream或ZipOutputStream将内容写回来

确保您没有通过类路径读取资源,并且它来自磁盘/网络上的文件。