首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.class文件中编写javassist代理字节码?

在.class文件中编写javassist代理字节码?
EN

Stack Overflow用户
提问于 2012-03-30 19:24:36
回答 1查看 958关注 0票数 0

我想反编译一个javassist代理,以了解ProxyFactory.makeForwarder实际上做了什么。我看到从OutputStream中编写类字节码是可能的,但如果以ProxyFactory.createClass()开头--模仿Hibernate如何使用ProxyFactory.createClass--则无法解决如何创建CtClass。以下是我尝试过的:

代码语言:javascript
复制
public void testProxyToDisk() throws Exception {
    ProxyFactory f = new ProxyFactory();
    f.setSuperclass(Product.class);
    f.setFilter(new MethodFilter() {
        public boolean isHandled(Method m) {
            // ignore finalize()
            return !m.getName().equals("finalize");
        }
    });
    Class<?> proxyClass = f.createClass();
    ClassPool classPool = ClassPool.getDefault();
    ClassLoader classLoader = ProxyFactory.classLoaderProvider.get(f);
    classPool.appendClassPath(new LoaderClassPath(classLoader));
    CtClass ctClass = classPool.get(proxyClass.getName());  //barfs here    
    ctClass.debugWriteFile();
}

这就是结果。

javassist.jassist_163.Find2MethodsPerfTest.testProxyToDisk(Find2MethodsPerfTest.java:36)

javassist.NotFoundException: javassist.jassist_163.Product_$$_javassist_0 at javassist.ClassPool.get(ClassPool.java:450)

Test类和Product在同一个包(javassist.jassist_163)中,fwiw。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-03-30 19:37:09

我应该更有耐心:设置ProxyFactory.writeDirectory就行了

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9949265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档