我似乎遇到了Java编译器的怪异行为。
基本上我在Java类中有以下代码

@Autowired
SubProcessDao subProcessDao;

@Autowired
ProcessDao processDao;

public void startProcess(BatchDetail batchDetail){
processDao.process(batchDetail.getCode());//// Line1
}


当我们的构建团队将其部署到服务器时,
以上代码
在第1行开始失败,processDao调用了process方法
由于Null指针异常。

我很惊讶地看到它,因为它在所有机器上都工作得很好,代码看起来也很好。。但是,在进一步的调查中,我发现战争文件中存在的上述.class文件似乎缺少@Autowired注释processDao ...
反编译时的“ .class”文件如下所示:

@Autowired
SubProcessDao subProcessDao;
ProcessDao processDao;


在ProcessDao上看到缺少的@Autowired注释。
在构建团队构建代码的svn存储库中,从来没有一个实例出现在ProcessDao中缺少@Autowired批注的情况。
有人遇到这种问题吗?或者有人可以解释这种行为吗?

这里使用的Java版本是1.6.27,使用的构建工具是maven

最佳答案

也许在ProcessDao类中,您忘记了使用@Component声明它为Spring bean。

10-06 02:23