研究jvm hotswap的过程中,有一步需要读取java class的字节流,本来想只提供一个class就好了,但是在Web项目下不通用,先记录下来,留待以后使用。
ps:
-javaagent:$CATALINA_BASE/lib/classreloader-1.0.0.jar
private static byte[] loadBytes(Class<?> cls) throws IOException {
if (cls == null)
return null;
String name = cls.getCanonicalName().replaceAll("\\.", "/") + ".class";
InputStream is = ClassLoader.getSystemResourceAsStream(name);
BufferedInputStream bis = new BufferedInputStream(is);
try {
int length = is.available();
byte[] bs = new byte[length];
System.err.println("ddd:" + bs.length);
bis.read(bs);
// is.close();
return bs;
} finally {
bis.close();
}
}ps:
-javaagent:$CATALINA_BASE/lib/classreloader-1.0.0.jar
本文介绍了一种在JVM HotSwap场景中加载Java类字节流的方法。该方法通过获取系统的资源流并将其转换为字节数组来实现。此过程涉及到Class对象、输入流操作及异常处理。

被折叠的 条评论
为什么被折叠?



