我似乎遇到了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。