为什么在仅更改符号名称后会获得不同的“类”文件?

时间:2014-02-03 21:08:19

标签: java version-control bytecode

当我在相应的'java'文件中仅更改符号名称(类,接口,函数或变量)时,为什么Java字节码解释器会更改'class'文件?

我在源代码管理(GIT)下维护这两种类型,并且我一直看到“两次更改文件的数量”,即使是上面提到的化妆品更改。

顺便说一下,关于源控制问题的问题是,但仅仅是因为我将这些文件保存在GIT上的原因是为了能够“清理”(删除所有未版本控制的)文件),然后从命令行运行该程序而不重新编译它。

如果你知道如何实现这个功能(没有构建运行),那么我很乐意听到它......

由于

2 个答案:

答案 0 :(得分:7)

因为类文件包含符号名称。

通常,人们不会将其类文件保留在源代码管理中。如果有人想要旧版本的类文件,他们会获得旧的源文件并进行编译。

答案 1 :(得分:2)

由于多种原因,JVM需要访问符号名称,包括以下内容。

  • JVM使用符号名来查找类,方法等。
  • 符号名称的存在使我们能够编写使用反射的代码。
  • 抛出异常时,符号名称出现在堆栈跟踪中。

因此符号名称需要存储在类路径中。