0
私はクラスを再定義しようとしています。私はフォルダという名前のクラスを持っています。 OSGi(Felixを使用)では、同じメソッドでいくつかの追加のロギングを持つ新しいFolderクラスがあります。クラス再定義が機能しない
私は起動時にエージェントが設定されていませんフェリックスからフォルダクラスを取ると、メインクラスローダ
のメインフォルダのクラスを再定義しようとしています。
new ByteBuddy()
.redefine(Class.forName(classToOverride.trim()), ClassFileLocator.ForClassLoader.of(felixClassLoader))
.name(classToOverride.trim())
.make() .load(contextClassLoader);
私はロードメソッドでさまざまな方法を試しました。
私はClassReloadingStrategy.fromInstalledAgentで次のエラー
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:?]
を取得する任意の戦略がなければ私はエラーを取得していないが、動作しません。
AgentBuilder APIまたはAgentBuilderとAdviceの両方を使用してフィールド(クラスレイアウト)を変更することはできません。 –
ツールを使用することはできません。 –
私はいくつかのJava仕様が合格している場合にのみ、あなたのstackoverflowの言及を考えましたか?それはどれですか? –