可以将 URLClassLoader 中的类保存到普通的 file.class 中吗?然后反编译它?
我尝试将其保存为对象使用
Class<?> clazz = classLoader.loadClass("foo.Bar");
FileOutputStream sf = new FileOutputStream(f);
ObjectOutputStream s = new ObjectOutputStream(sf);
s.writeObject(clazz);
s.close();
但这不起作用。
那么...如何反编译它?我需要得到类似于 jd-gui 的结果,但使用 URLClassLoader 中的类。
最佳答案
您需要将类名称(例如 "foo.Bar"
)映射到资源路径名称(例如 "/foo/Bar.class"
),然后使用classLoader.getResourceAsStream
打开一个流来读取字节码文件。
理论上,可以将其提供给反编译器...假设您有一个可以从 InputStream
读取的反编译器。
您目前所做的操作失败,因为 Class
对象无法序列化。
关于java - 将类从 URLClassLoader 保存到文件?并反编译它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22226892/