我在下一个代码中创建包foo.bar
和类的包信息foo.bar.BarCl
public static void main(String[] args) throws ClassNotFoundException, IOException {
DynamicType.Unloaded<?> make = new ByteBuddy().makePackage("foo.bar").make();
DynamicType.Loaded<Object> load = new ByteBuddy()
.subclass(Object.class)
.name("foo.bar.BarCl")
.make()
.include(make)
.load(Main2.class.getClassLoader(), ClassLoadingStrategy.Default.INJECTION);
load.saveIn(new File("folder"));
Class<?> loaded = load.getLoaded();
System.out.println(loaded.getPackage());
}
类和包信息正确写入文件夹:
package foo.bar;
interface $$package-info /* Real name is 'package-info' */ {
}
package foo.bar;
public class BarCl {
public BarCl() {
}
}
但是在注入这些类后的运行时,我得到了loaded.getPackage()==null
如何将包信息与生成的类相关联?
PS 在实际任务中,我需要使用@XmlSchema
指定 xml 命名空间的 JAXB 注释生成包信息。没有它,类就会发生命名冲突