【发布时间】:2014-02-27 13:19:53
【问题描述】:
为什么当我只更改相应“java”文件中的符号名称(类、接口、函数或变量)时,Java 字节码解释器会更改“类”文件?
我在源代码控制 (GIT) 下维护这两种类型,并且我一直看到“更改文件的数量是两倍”,即使是上面提到的外观更改也是如此。
顺便说一句,问题不是关于源代码控制问题,但仅供参考,我将这些文件保留在 GIT 上的原因是为了能够“清理”(删除所有未版本控制的文件),然后在不重新编译的情况下从命令行运行程序。
如果您知道如何实现此功能(无需构建即可运行),那么我会很高兴听到它...
谢谢
【问题讨论】:
-
你不应该在git中存储
.class文件。 -
谢谢 SLaks。总的来说,我会同意这一点,并且我会在某个时候摆脱它们,但这并不是真正的问题。
-
为什么改变符号名不会改变类文件?
-
@Peter Lawrey:据我所知,在 C 和 C++ 等本地语言中,可执行文件在“真机”上运行(与 Java 相反,可执行文件在虚拟机) - 更改符号名称不会影响可执行文件(除非它包含调试信息,我什至不确定)。我猜我对 Java 字节码解释器的期望是错误的......
-
@barakmanos 更改符号确实会影响即使在 C 和 C++ 中生成的二进制文件,因为您可能有调试信息或稍后将被链接器绑定的模块。例如,如果您转储
strings a.out,您会看到许多对方法名称的调用。
标签: java version-control bytecode