我从我的测试class.In测试类我使用static关键字在这里userService的前面,因为我是从访问静态上下文的userService打电话给我的EJB bean为什么Ejb接口抛出NullPointerException?
注(从主要方法。):另外如果我不使用userService前面的静态关键字,那么我也得到了同样的错误。
public class Test {
@Inject
private static UserService userService;
public Test() {
// TODO Auto-generated constructor stub
}
public static void main(String args[]){
userService.doSomething("hello");
}
}
我设置的EJB 3接口/实现这样看...
UserService(接口)
package business;
public interface UserService {
public String doSomething();
}
UserServiceBean(实现)
@Stateless
@Local
public class UserServiceBean implements UserService{
public UserServiceBean() {
}
@Override
public String doSomething() {
return "Work done!";
}
}
W我打电话doSomething方法 UserServiceBean类使用我的Test类的接口。它给了我这样的错误。
Exception in thread "main" java.lang.NullPointerException
at test.Test.main(Test.java:17)
请解释为什么会出现此错误。
'userService'为空,并没有被分配一个值。从'@ Inject'注释中,我认为你*期望有这样做的事情,但是我不清楚你实际上是否配置了这样的行为。例如,我不希望“静态”字段是可注射的。 – dimo414
我在这里使用静态,因为我从静态上下文访问userService。或者注入UserService的目的只是通过调用EJB bean(UserServiceBean)来获取输出。我的问题很清楚。 –
你正在使用什么容器? – HRgiger