【发布时间】:2014-07-11 09:15:26
【问题描述】:
我似乎遇到了 java 编译器的奇怪行为。 基本上我在 java 类中有以下代码
@Autowired
SubProcessDao subProcessDao;
@Autowired
ProcessDao processDao;
public void startProcess(BatchDetail batchDetail){
processDao.process(batchDetail.getCode());//// Line1
}
当它被我们的构建团队部署到服务器时, 上面的一段代码 在 processDao 调用 process 方法的第 1 行开始失败 因为空指针异常。
我很惊讶看到这一点,因为它在所有机器上都运行良好,代码看起来也很好。但在进一步调查中,我发现 war 文件中存在的上述 .class 文件似乎缺少@ processDao 的自动装配注释... '.class' 文件反编译后如下所示:
@Autowired
SubProcessDao subProcessDao;
ProcessDao processDao;
查看 ProcessDao 上缺少的 @Autowired 注释。 在构建团队构建代码的 svn 存储库中,从未出现过 ProcessDao 中缺少 @Autowired 注释的实例。 有没有人遇到过这种问题?或者有人可以解释这种行为
这里使用的java版本是1.6.27,使用的构建工具是maven
【问题讨论】:
-
部署了另一个版本?
-
我们使用 svn 来构建代码,所以不要认为这应该是问题
标签: java spring build maven-3 spring-annotations