之前我问过这个问题,但是我从之前的代码做了一些重大更改。我正在尝试使用Java EE 6中的@Inject注释在web-app中注入一个对象。我正在使用@ Produce,我正在使用@ Qualifier。我在Tomcat 7中运行它,我读到它不支持CDI,因为它主要是一个servlet容器而不是一个完整的Java EE容器,所以我尝试将Weld添加到其中。
使用@Inject
注入的类@Path("login")
public class Login{
@Inject
@Config
private String name;
//do somthing with String name
}
我的制作人类
import javax.enterprise.inject.Produces;
public class ConfigurationFactory {
@Produces @Config
public String getName() {
return "XYZ";
}
}
我使用了限定符
@Target( { TYPE, METHOD, PARAMETER, FIELD })
@Retention(RUNTIME)
@Qualifier
public @interface Config {
}
我在stackoverflow和外部材料以及Java EE 6规范中阅读了很多文章。我遵循这个结构但我仍然得到这个错误
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at Injectee
由于tomcat不支持CDI,我使用此POM依赖性添加了焊接 这是我的Pom.xml
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>1.1.10.Final</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
我在oracle站点中建议的WEB-INF目录下添加了一个空的Beans.xml文件。
我不确定为什么会这样,所以我尝试分析问题并在WEB-INF目录下添加了一个空的bean.xml文件,并且我尝试绑定资源文件&#34; ConfigurationFactory&#34;使用astractBinder。任何建议?