问题描述
我正在使用byte-buddy:1.10.17
和byte-buddy-android:1.10.17
为Android编写Java代码来动态创建类。我想动态创建一个类,该类将是另一个动态创建的类的子类。
这是我想要做的示例代码
AndroidClassLoadingStrategy loadingStrategy = new AndroidClassLoadingStrategy.Wrapping(context.getCacheDir());
DynamicType.Builder builder = new ByteBuddy().subclass(Object.class).name("TestParentClass");
Class testParentClass = builder.make().load(Test.class.getClassLoader(),loadingStrategy).getLoaded();
builder = new ByteBuddy().subclass(testParentClass).name("TestChildClass");
Class testChildClass = builder.make().load(Test.class.getClassLoader(),loadingStrategy).getLoaded();
但是创建子类时我得到Caused by: java.lang.classNotFoundException: Didn't find class "TestParentClass"
。
我也检查了this question,但它根本不起作用。
解决方法
不要使用Test的类加载器。那将在您的类路径中寻找一个类文件。动态类TestParentClass将没有任何对象。而是从TestParentClass获取类加载器:
$.extend($.fn.dataTable.defaults,{
serverSide: false,});