我似乎遇到了java编译器的奇怪行为。 基本上我在java类中有以下代码
@Autowired
SubProcessDao subProcessDao;
@Autowired
ProcessDao processDao;
public void startProcess(BatchDetail batchDetail){
processDao.process(batchDetail.getCode());//// Line1
}
当我们的构建团队将其部署到服务器时, 上面的一段代码 在第1行开始失败,其中processDao调用了进程方法 因为Null指针异常。
我很惊讶看到它,因为它在所有机器上工作得非常好,代码看起来也很好。但是在进一步调查中我发现上面的.class文件在war文件中出现了似乎丢失了@ processDao的自动注释... '的.class'反编译时的文件如下所示:
@Autowired
SubProcessDao subProcessDao;
ProcessDao processDao;
在ProcessDao上看到丢失的@Autowired注释。 在构建团队构建代码的svn存储库中,从未有过ProcessDao中缺少@Autowired注释的实例。 有没有人遇到过这种问题?或者有人可以解释这种行为
这里使用的java版本是1.6.27,使用的构建工具是maven
答案 0 :(得分:0)
也许在ProcessDao类中,您忘记使用例如@Component
将其声明为Spring bean