【发布时间】:2013-12-17 03:39:59
【问题描述】:
我目前正在开发一个程序,为我老师的教室制作坐表。我已将所有数据文件放入 jar 中。这些被读入并放入表中。运行程序的主要功能后,它会更新文件以匹配表的值。我知道我需要炸开罐子,然后在执行过程中重新打开它才能编辑文件,但我找不到任何关于如何在执行过程中重新打开的说明。有人有什么想法吗?
【问题讨论】:
标签: java jar decompiling
我目前正在开发一个程序,为我老师的教室制作坐表。我已将所有数据文件放入 jar 中。这些被读入并放入表中。运行程序的主要功能后,它会更新文件以匹配表的值。我知道我需要炸开罐子,然后在执行过程中重新打开它才能编辑文件,但我找不到任何关于如何在执行过程中重新打开的说明。有人有什么想法吗?
【问题讨论】:
标签: java jar decompiling
将数据文件放在二进制文件之外,并与 JAR 一起放在单独的文件夹中。
您似乎是从错误的方向解决问题。 JAR 文件类似于 Windows 平台上的可执行文件 (.exe) - 一个包含代码的只读二进制文件。
您可以(尽管这是一种不好的做法)将一些资源(如数据文件、多媒体等)放入 JAR 中(就像您可以在 .exe 中一样)。但更好的解决方案是将这些资源放在二进制文件之外,这样您就可以在不重新编译/重建的情况下切换它们。
如果您需要在应用程序运行时即时修改资源,您基本上别无选择。数据文件必须在二进制文件之外。再一次,您永远不会看到 Windows .exe 文件在运行时自行修改。
【讨论】:
.jar 文件无论如何都不安全
Tomasz 说得对,以下是不好的做法,但有可能。
类路径的内容在引导过程中被读入内存,但是文件是可修改的,但它们的更改不会在初始化后反映。我建议将数据放入另一个文件中,与您的类文件分开,但如果您坚持将它们放在一起,您可以查看:
确保您没有通过类路径读取资源,并且它来自磁盘/网络上的文件。
【讨论】: