我有一个现有的Java 7 webprofile web应用程序,用于TomEE和Glassfish。我现在已经尝试将它部署到树脂4.0.55开源版本上。我让CDI使用@Named("key") String注入配置字符串的机制失败了,原因如下:
/home/tra/Hentet/resin-4.0.55/conf/app-default.xml:55: @Named('dpa') is
a duplicate name for
ProducesMethodBean[String, IngesterModule.provideDestinationPath(), {@javax.inject.Named(value=dpa.putfile.destinationpath), @Default(), @Any()}, name=dpa.putfile.destinationpath]
ProducesMethodBean[String, IngesterModule.provideDeliveriesFolder(), {@javax.inject.Named(value=dpa.deliveries.folder), @Default(), @Any()}, name=dpa.deliveries.folder]我的源代码中没有@Named("dpa"),但是错误消息中列出的名称有以dpa开头的键。
这是什么意思?原因是什么?我该怎么解决呢?
发布于 2018-03-01 12:35:26
消息"@Named('{0}') is a duplicate name for\n {1}\n {2}“可以在InjectManager.java类文件中找到。
相关源代码:
private void addBeanByName(String name, Bean<?> bean)
{
...
// ioc/0g31
int p = name.indexOf('.');
if (p > 0) {
addBeanByName(name.substring(0, p), bean);
}
}使用句点字符('.')分隔给定的名称,并递归地将给定的bean添加到上下文中。这种行为必须在CDI1.0 (JSR-299)中描述,或者实现是错误的。
ioc/0g31的评论看起来像是对一个问题的引用,但我在臭虫追踪系统中找不到它。
https://stackoverflow.com/questions/48817314
复制相似问题