尝试访问注入的 Bean 时出现空指针异常

Nullpointer Exception when trying to access Injected Bean

我有一个 Maven 多模块项目。当尝试访问注入的 bean 时,出现 Nullpointer 异常。

这是启动应用程序的主要功能

public class App {

    public static void main(String[] args) {
        System.out.println("Startpoint");
        DecisionMaker decisionMaker = new DecisionMaker();
        decisionMaker.run();
    }
}

这就是我在 DecisionMaker 中所做的

public class DecisionMaker {

@Inject
GameListener gm;

@Inject
BasicProductionManager basicProductionManager;

public DecisionMaker() {
    System.out.println("this is the decisionmaker");
    System.out.println(gm.toString());
}

所以这不是一个 bean,而是一个普通的 pojo

gamelistener 是我要注入的 Applicationscoped bean。

@Named
@ApplicationScoped

public class GameListener extends DefaultBWListener {

@Inject
Event<OnFrameEvent> onFrameEvent;

public Mirror mirror = new Mirror();

public Game game;

public Player self;

@PostConstruct
public void init() {
    System.out.println("init listener");
}

空指针被抛入 DecisionMaker 的构造函数中。 @PostConscrutct 初始化方法未被调用

我调查了类似的问题,但我发现我需要我已经拥有的 PostConstruct 方法。

您无法实例化 DecisionMaker 自己。 CDI 的全部意义在于赋予它创建和管理 bean 的控制权。

查看此 article 了解如何在 JAVA SE 中使用 CDI。