0
所以我正在嘗試重新定義一個類。我有一個名爲文件夾的類。在OSGi(使用Felix)我有一個新的文件夾類與相同的方法,但一些額外的日誌記錄。類重新定義不工作
我試圖從菲利克斯文件夾類並重新定義主類加載器
我有代理在啓動時設置主文件夾類。
new ByteBuddy()
.redefine(Class.forName(classToOverride.trim()), ClassFileLocator.ForClassLoader.of(felixClassLoader))
.name(classToOverride.trim())
.make() .load(contextClassLoader);
我試圖在負載方法不同的策略。
沒有任何策略,我得到以下錯誤
Caused by: java.lang.IllegalStateException: Cannot inject already loaded type: class com.dotmarketing.portlets.folders.model.Folder
at net.bytebuddy.dynamic.loading.ClassInjector$UsingReflection.inject(ClassInjector.java:187) ~[byte-buddy-1.6.12.jar:?]
at net.bytebuddy.dynamic.loading.ClassLoadingStrategy$Default$InjectionDispatcher.load(ClassLoadingStrategy.java:187) ~[byte-buddy-1.6.12.jar:?]
at net.bytebuddy.dynamic.loading.ClassLoadingStrategy$Default.load(ClassLoadingStrategy.java:120) ~[byte-buddy-1.6.12.jar:?]
at net.bytebuddy.dynamic.TypeResolutionStrategy$Passive.initialize(TypeResolutionStrategy.java:79) ~[byte-buddy-1.6.12.jar:?]
at net.bytebuddy.dynamic.DynamicType$Default$Unloaded.load(DynamicType.java:4376) ~[byte-buddy-1.6.12.jar:?]
at com.dotmarketing.osgi.GenericBundleActivator.publishBundleServices(GenericBundleActivator.java:177) ~[dotcms_4.1.0_563a5c3.jar:?]
隨着ClassReloadingStrategy.fromInstalledAgent我沒有得到任何錯誤,但不起作用。
表示使用AgentBuilder API或AgentBuilder和Advice都無法更改字段(類佈局),對吧? –
這是不可能使用任何工具。 –
我以爲你的stackoverflow的提到,如果只有一些Java Spec傳遞?它是哪一個? –