我intellij中的jar资源文件是只读的,我需要对其进行编辑

ton*_*tew 5 java intellij-idea libraries

我已经尝试了几个小时,但都没有成功地编辑我正在用作库的jar中的Java文件。我已将该资源标记为内容根目录和源根目录,但仍然无法编辑jar中的代码。该项目可以编译并正确运行,但是我需要对资源文件进行调整,但是不能;我尝试了所有我能想到的项目结构。只是不可能吗?感谢所有帮助。

Ste*_*n C 7

不建议编辑 JAR 文件。从重现性1的角度来看,最好是:

  1. 获取库的源代码树
  2. 将其签入您的版本控制(或在 Github 上将其分叉)
  3. 修改并构建它
  4. 使用生成的 JAR 而不是原始 JAR

另一种方法是通过创建另一个具有替代版本资源的 JAR 并将其放置在应用程序类路径中的较早位置来“覆盖”您想要进行的更改。

但是,如果这些都不适合您,您可以使用jar命令行中的命令来修改 JAR 文件:

  1. 用于jar -x ...将文件解压缩到临时目录树
  2. 应用需要对树进行的更改
  3. 用于jar -c ....从树创建一个新的 JAR。

阅读该jar命令的手册条目以了解更多详细信息。如果您不是原始签名者,使用原始密钥签署新 JAR 将是一个问题,但我怀疑这与您有关。


1 - 关键是下一个维护你代码的人需要知道你对你“编辑”的库 JAR 做了什么,以防他需要对另一个版本的 JAR 执行相同的过程。如果您手动完成,他别无选择,只能对原始版本和您编辑后的版本之间的差异进行法医比较。并且假设仍然可以获取原始 JAR。请注意,“下一个人”可能是您……在几个月或几年之后,当您完全忘记自己做了什么时。