相关疑难解决方法(0)

有没有办法在运行时获取类的字节码?

在Java中,是否有一种方法(在运行时)获取定义特定类的字节码?

换句话说,有没有办法获取在加载特定类时byte[]传递给的数组ClassLoader.defineClass(String name, byte[] b, int off, int len)?我看到声明了这个方法final,因此创建一个ClassLoader拦截类定义的自定义似乎是不可能的.

在过去,我已经使用类ClassLoader来通过该getResourceAsStream(String)方法获取字节码,但我更喜欢更规范的解决方案.

java bytecode runtime

16
推荐指数
2
解决办法
4686
查看次数

从加载的类中获取字节码

假设在我的JVM中我有一个加载的类Class<C> myClass.有可靠吗?方法向JVM询问字节码.class的内容?就是这样的:

<C> byte[] getClassBytecode(Class<C> myClass) {
    return /* the contents of the .class resource where C was loaded from */;
}
Run Code Online (Sandbox Code Playgroud)

(显然InputStream会和它一样好byte[]).我知道我可以使用myClass.getResource()(和朋友)来获取类文件,但是在类名上敲击以获取一个提供给getResource的URL感觉不对.此外,我不确定在C动态生成(例如使用javax.tools.JavaCompiler)的情况下这将如何表现.

任何(更好)的想法?

注意:目标是能够推动 字节码 类到不同的JVM并使用自定义类加载器在那里加载它们

java class classloader

12
推荐指数
1
解决办法
7441
查看次数

标签 统计

java ×2

bytecode ×1

class ×1

classloader ×1

runtime ×1