据我目前的理解this article作者写的主要目的是检查是否有人更改了字节码。因为“由编译器为 Java 编程语言生成的类文件总是通过验证”。这是我们拥有字节码 validator 以防止其他人恶意更改我们的字节码的唯一原因吗?
最佳答案
另一个原因是检查字节码确保这是 jvm 可以运行的实际有效字节码,它可以防止 jvm 运行无效代码,这可能会导致一些不可预测的结果。通过禁用字节码验证,您表示您相信您加载的所有类在字节码级别没有错误。
有用 article .
当你有一个有很多依赖项的大项目时,你通常不能确定是否在这个项目或其依赖项中的某处生成了一些类,即使你确定现在这些地方,你也不能确定没有那里有 bug 。生成这些类的代码可能存在错误,您最终可能会得到无效的字节码。
即使是 javac 也可能有一些错误,因此即使它也可能产生无效的类作为输出。
关于java - 为什么Java要进行字节码校验?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50485128/