我有一些我想要编译的源代码文件。为此,我必须指定一个类路径,其中包含(通过指定jar)所有使用的类和具有正确签名的方法。
假设我有两个不同的类路径,这两个类路径都导致编译没有错误。这些类路径可能在罐子的顺序,罐子的版本(例如较旧版本的公共集合被新的更换)或不必要的罐子的存在方面有所不同。
这些类路径如何影响字节码?我读到,对于不同的类路径,常量池的顺序可能不同。还有其他可能的差异吗?
再次说明:我认为编译的所有依赖关系都得到满足,但可能使用不同的jar。
答案 0 :(得分:1)
您编译的类确实会影响您生成的字节码。我知道的领域受到影响:
static
查找和调用静态方法的代码与常规(实例)方法的代码不同;如果代码在不兼容的库版本static
和final
声明为static
块之外的常量值,则编译器会内联许多常量(整数,字符串等);如果从属库的不同版本为代码引用的常量定义了不同的值或类型,那么代码在其字节码中将具有不同的值