我正在测试 official documentation 之后的 Java 7 CDI 功能但是当我尝试访问 greeting
对象时,我得到了一个 NullPointerException
。该项目是一个 Jar Maven 项目。
这是Greeting
类
package greetings;
import javax.enterprise.inject.Default;
@Default
public class Greeting {
public void greet(String name) {
System.out.println("Hello, " + name + ".");
}
}
这是我注入(inject)bean的测试类
package greetings;
import static org.junit.Assert.assertTrue;
import javax.inject.Inject;
import org.junit.Test;
public class Tester {
@Inject Greeting greeting;
@Test
public void greet()
{
greeting.greet("Mark");
assertTrue(greeting!=null);
}
}
我还在 src/main/resources/META-INF
文件夹中添加了 beans.xml
文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
当我运行测试时,我在 Tester
类的标记行处得到了一个 NullPointerException
。
你怎么看待这个问题?我浏览了很多文档,但似乎通过添加已经在类路径中的 beans.xml
解决了这个问题。
最佳答案
您可以在 jUnit 测试中使用 CDI。检查这个:http://jglue.org/cdi-unit/
关于Java CDI @Inject 抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23999326/