CAF*_*FxX 12 java class classloader
假设在我的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并使用自定义类加载器在那里加载它们
注意:目标是能够使用不同JVM上的自定义类加载器加载字节码
类加载器不只是加载字节码.因此,如果你是能够得到字节码出来的JVM内存(如果你写了很多的具体实现的本地代码理论上是可能的),这将是无用的远程类加载器.你需要给它一个实际的.class文件.
而Class.getResource()是完成此任务的最佳方式.因为它看起来与调用类在同一个包中,所以你需要做的就是使用类的简单名称,追加".class",你就完成了.
如果你有内部或嵌套类,它确实变得有点困难,但这是一个你必须处理的实现细节(如果你推动初始类,你仍然需要拉取任何依赖类).