簡體   English   中英

如何在 Byte-buddy 中將 package-info 與 class 關聯?

[英]How to associate package-info with class in Byte-buddy?

我在下一個代碼中創建 package foo.bar和 class 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());
    }

Class 和 package 信息正確寫入文件夾:

package foo.bar;

interface $$package-info /* Real name is 'package-info' */ {
}


package foo.bar;

public class BarCl {
    public BarCl() {
    }
}

但是在運行時注入這些類后,我得到loaded.getPackage()==null我如何將包信息與生成的 class 關聯?

PS 在實際任務中,我需要使用 JAXB 注釋@XmlSchema生成包信息,指定 xml 命名空間。 沒有它,類就會發生命名沖突

包是 class 加載程序責任,而不是由package-info class 定義。 您可以使用加載程序 DSL定義它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM