类路径如何影响* .class文件

时间:2016-12-09 20:30:30

标签: java classpath

我有一些我想要编译的源代码文件。为此,我必须指定一个类路径,其中包含(通过指定jar)所有使用的类和具有正确签名的方法。

假设我有两个不同的类路径,这两个类路径都导致编译没有错误。这些类路径可能在罐子的顺序,罐子的版本(例如较旧版本的公共集合被新的更换)或不必要的罐子的存在方面有所不同。

这些类路径如何影响字节码?我读到,对于不同的类路径,常量池的顺序可能不同。还有其他可能的差异吗?

再次说明:我认为编译的所有依赖关系都得到满足,但可能使用不同的jar。

1 个答案:

答案 0 :(得分:1)

您编译的类确实会影响您生成的字节码。我知道的领域受到影响:

  • static查找和调用静态方法的代码与常规(实例)方法的代码不同;如果代码在不兼容的库版本
  • 下运行,则可能导致代码在运行时失败
  • 常量:如果将staticfinal声明为static块之外的常量值,则编译器会内联许多常量(整数,字符串等);如果从属库的不同版本为代码引用的常量定义了不同的值或类型,那么代码在其字节码中将具有不同的值