首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字节Buddy和ClassLoadingStrategy.UsingLookup

字节Buddy和ClassLoadingStrategy.UsingLookup
EN

Stack Overflow用户
提问于 2018-10-25 08:23:29
回答 1查看 264关注 0票数 1

我一直在OSGi应用程序中使用Buddy来实现简单的检测服务。一个包提供了一个注释,用于标记要检测的方法,以及一个从客户机包的bundle激活器中调用的方法。该调用将导致搜索客户端包的条目,以查找带有批注标记的方法的类。这些类中的每一个都被读取为字节码,并通过Advice进行增强,并使用客户机包的类加载器抢先加载。

我使用ClassLoadingStrategy.Default.INJECTIONByteBuddy::redefine加载类。在加载任何原始类之前,需要从客户机包的包激活器调用操作,从而避免了对代理的需求。

我现在注意到关于INJECTION的评论,它说它不会从Java11继续工作。我找到了一个DZone文章,它将ClassLoadingStrategy.UsingLookup表示为新的等价物,并展示了如何在Java8到11上编译和运行代码。

  1. UsingLookup可以和redefine一起使用吗?
  2. Lookup::defineClass不允许替换已经加载的类吗?
  3. 现在我是否必须让客户端包在每个包中都包含一个“钩子”类,其中包含要检测的类?其思想是,对于每个包,工具中心可以首先加载钩子类(使用客户端的类加载器),然后在调用MethodHandles::privateLookupIn时传递MethodHandles::privateLookupIn,以获得一个Lookup,然后该Lookup可用于定义和加载该包的检测类。
  4. 你有比3更好的主意吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-11-22 01:56:22

我发现在每个目标包中放置一个包info.java并加载“class”提供了一个整洁的钩子。然而,我后来了解到OSGi编织钩子,并使用它。

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

https://stackoverflow.com/questions/52984627

复制
相关文章

相似问题

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