如果应用程序在使用自定义加载器加载它们之前创建了仪器类文件,任何人都可以关注可能出现的问题。我创建了一个执行相同操作的 java 应用程序。
我以字节数组的形式读取类文件然后我使用 asm 库进行检测,然后通过自定义类加载器加载它们。
如果是,这个程序是否容易失败,为什么?
如果应用程序在使用自定义加载器加载它们之前创建了仪器类文件,任何人都可以关注可能出现的问题。我创建了一个执行相同操作的 java 应用程序。
我以字节数组的形式读取类文件然后我使用 asm 库进行检测,然后通过自定义类加载器加载它们。
如果是,这个程序是否容易失败,为什么?
这样做的主要问题是它将您的应用程序与 JVM 联系在一起。Java 社区非常努力地将 JLS 和 JVMS 分开,以便理论上可以在没有 JVM 的情况下使用 Java,并且有两个相当广泛的平台实际上在没有 JVM 的情况下使用 Java:Android 和 GWT。如果您不希望在不理解 Java 字节码的平台上运行,那么您就可以了。
请注意,静态字节码操作是完全可以的。您可以在操作后将JVM 字节码交叉编译为 Dalvik 字节码。但是如果你想在运行时这样做,你必须在你的应用程序中包含 JVM-to-Dalvik 交叉编译器......它仍然无法工作,因为 Dalvik VM 根本不支持以相同方式加载动态字节码JVM会。