Java 如何使用原始设置更新JAR文件?

Java 如何使用原始设置更新JAR文件?,java,jar,Java,Jar,我正在尝试更新Kitchen.jar文件,但更新后它拒绝工作。以下是我所做的: $ jar xf Kitchen.jar $ jar uf Kitchen.jar com/package/Toster.class 一切看起来都很好opendiff(以及jar tf)显示无差异,但文件大小不同,为1008字节。二进制比较显示了大约700个差异。罐子也不能用了 如您所见,我没有更改任何文件,只是进行了提取,并用原始的未触及类文件更新了jar文件 我已经看到了,但这并没有回答它,因为我的结构没有改变

我正在尝试更新
Kitchen.jar
文件,但更新后它拒绝工作。以下是我所做的:

$ jar xf Kitchen.jar
$ jar uf Kitchen.jar com/package/Toster.class
一切看起来都很好
opendiff
(以及
jar tf
)显示无差异,但文件大小不同,为1008字节。二进制比较显示了大约700个差异。罐子也不能用了

如您所见,我没有更改任何文件,只是进行了提取,并用原始的未触及类文件更新了jar文件

我已经看到了,但这并没有回答它,因为我的结构没有改变

原始舱单包含以下内容:

Created-By: 1.7.0_05-b05 (Oracle Corporation)
而我:

$ javac -version
javac 1.7.0_17
我不得不说(但不确定这是否相关)我试图修改的Jar文件是EclipseIDE插件的一部分

我有两个想法:

  • 这是因为我在Mac上,而原来的jar是在不同的平台上创建的
  • 这是因为在创建包时定义了一些(jar的-J选项)

  • 这让我觉得我要么需要找到它创建的平台并尝试在那里打包,要么需要找到在打包操作期间定义了哪些-J选项。可能吗?如何?

    您所说的“jar拒绝工作”是什么意思?请添加与jar不再工作相关的错误消息。?@Funtik,Eclipse插件会按预期停止工作,并在某些点抛出NPE和ULE。尽管如此,事件日志并未显示特定类或邻近类中的任何错误。系统本身停止运行。我问这个问题的原因是因为我知道这是可能的,因为我有一个用于早期版本IDE的修改过的jar文件的工作示例。使用旧JAR文件会抛出预期类的异常。如果没有任何跟踪,很难提出任何建议。您可以尝试调试jar文件(我想您没有jar文件的源代码,因此您还需要使用eclipse的某种反汇编插件),只需将jar作为源代码导入,在调试模式下启动eclipse,并希望一切顺利。@m0skit0我这样做是为了确定问题的起因。我确实在修改其中一个类,但在它不起作用之后,我不得不单独测试每个步骤,这就导致了打包步骤。