0

我在下一个代码中创建包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 注释生成包信息。没有它,类就会发生命名冲突

4

1 回答 1

1

包是类加载器的责任,不是由package-info类定义的。您可以使用加载程序 DSL定义它们。

于 2020-05-31T18:19:40.443 回答