Jas*_*ell 1 java reflection maven-2 annotations maven-plugin
我有一个代码生成器,它使用URLClassLoader来加载指定路径上的类,扫描它们以获取注释,然后在字段/方法上使用Reflection,生成DTO.
它在测试应用程序中运行良好.
当我把它放入Maven MOJO时,我突然失去了在类上看到javax.persistence.Entity注释的能力.它加载它们,它可以看到所有字段,但实体注释不再可见.
我假设这与Classpath问题有关 - 是吗?测试应用程序(插件本身中的main()函数)或MOJO都不是扫描类所来自的项目的一部分.但是一个有效,另一个没有.
我有一些调试代码在检查它时打印出类上的所有注释,而在非运行版本中它找不到任何注释.
我是如何调试问题/解决它的?
事实证明这个问题很简单,虽然我不确定为什么它在一个案例中工作得很好而在另一个案例中却没有.
我的URLClassLoader创建没有指定父类加载器.所以,我认为它找不到任何东西.我一使用了
loader = new URLClassLoader(classUrls, Thread.currentThread().getContextClassLoader());
Run Code Online (Sandbox Code Playgroud)
对于类加载器,它开始工作得很好.当涉及到类加载器的来龙去脉时,我很无知,所以这并不明显.特别是因为我跟随的例子没有指定父母.
| 归档时间: |
|
| 查看次数: |
2465 次 |
| 最近记录: |