如何在Byte-buddy中把package-info和类关联起来?

问题描述 投票:0回答:1

我创建了包的package-info 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如何将package-info与生成的类关联起来?

P.S.在实际任务中,我需要用JAXB注解生成package-info。@XmlSchema,指定xml命名空间。如果没有它,类就会出现命名冲突

java jaxb byte-buddy package-info
1个回答
1
投票

包是类加载器的可读性,而不是由一个定义的 package-info 类。您可以定义它们 使用加载器.

© www.soinside.com 2019 - 2024. All rights reserved.