有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java访问类字节?

我的目标是访问代表类字节码的字节[],而不需要在运行时明确知道类文件的位置

我研究了两个解决方案,其中一个方案取得了轻微的成功,但我想知道是否还有其他方法可以实现这一点(或者我在第二个解决方案中是如何出错的,我无法开始工作)

我的第一个(稍微)成功的解决方案是使用java。lang.instrumentation ClassFileTransformer类访问类的字节[]。尽管如此,我认为必须有一种更干净的方法来实现这一点

我的第二个解决方案是使用-Xbootclasspath JVM参数替换java。lang.ClassLoader,允许它访问加载的类的字节[]。我添加了一个简单的系统。出来println debug消息来确认类加载器的重写正在工作,但它没有。我从this paper关于同一主题的文章中得到了这个想法。我的课程与链接论文中整型课程的制作方式类似。我还为JVM参数使用了类似的目录设置,如下所示:

java -Xbootclasspath/p:.\out\production\boot\java\lang TestLoader

我的想法是,使用我链接的论文中的方法无法重写ClassLoader类

我很想知道为什么重写类加载器的尝试没有成功,也很想知道我还能做些什么来访问类的字节[]


共 (1) 个答案

  1. # 1 楼答案

    我想你只是把引导类路径弄错了。假设类加载器类文件为:

    .\out\production\boot\java\lang\ClassLoader.class
    

    你应该使用:

    java -Xbootclasspath/p:.\out\production\boot TestLoader