[英]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.