从URLClassLoader将类保存到文件?并反编译?

时间:2014-03-06 14:07:01

标签: java decompiling urlclassloader

可以将类从URLClassLoader保存到普通的file.class吗?然后反编译呢?

我尝试使用

将其保存为对象
        Class<?> clazz = classLoader.loadClass("foo.Bar");
        FileOutputStream sf = new FileOutputStream(f);
        ObjectOutputStream s = new ObjectOutputStream(sf);
        s.writeObject(clazz);
        s.close();

Bu无效。

那么......如何反编译呢?我需要得到像jd-gui的结果,但是使用URLClassLoader中的类。

2 个答案:

答案 0 :(得分:2)

您需要将类名(例如"foo.Bar")映射到资源路径名(例如"/foo/Bar.class"),然后使用classLoader.getResourceAsStream打开流来读取字节码文件。< / p>

理论上,这可以反馈到反编译器......假设您有一个可以从InputStream读取的反编译器。


您当前正在执行的操作失败,因为Class对象无法序列化。

答案 1 :(得分:0)

执行简单的HTTP下载而不是URLClassLoader,以将类放入文件中。然后反编译。

(将对象写入ObjectOutputStream只会将数据保存在对象的实例中,即使该对象已实现Serializable也是如此。不是您在这里寻找的。)