如何证明类文件与java文件匹配

时间:2014-04-25 02:36:13

标签: java compilation

我最近不小心提交了我的.class文件,而不是.java文件。

在评分员的反馈后,我提交了我的.java文件。从那里一切都很好,平地机相信这是一个诚实的错误。

但是,是否有一种简单的方法让评分者检查这两个文件是否真的匹配?

到目前为止,我只想到了两个解决方案:

  1. 编译.java,看看输出的.class是否相同/非常相似。这可能非常依赖于编译器。如果编译器相同,是否有其他变量会使.class不同?

  2. 反编译.class文件,并进行字符比较。这似乎需要做更多工作,并且可能与.java文件匹配甚至低于解决方案1.

  3. 有可靠的方法来检查吗?

2 个答案:

答案 0 :(得分:1)

如果在完全相同的环境中使用完全相同的编译器进行编译,则很可能会获得相同的类文件。

但是,如果编译器或平台存在差异,您应该查看this discussion

除此之外,您可能需要在功能上对其进行评估。也就是说,编写一个测试类来运行每个类的所有所需行为,并检查它们是否都返回相同的结果。

答案 1 :(得分:-2)

我做了一个非常简单的测试,它对我有用..

我编译了一个简单的java程序并创建了它的.class文件 然后我只需更改System.out.println内的一个字母,然后再次创建一个.class文件

然后在linux中使用diff命令,它告诉我two binary files are different

所以我认为不是反编译.class文件然后检查两个.java文件,而是直接检查两个.class文件

至少它对我有用。

希望这有帮助!