搞了我两天的ejb build error,今天终于给build出来了,大概记录一下过程,以备后忘。


这起事故的起因是这样的,原来百店通的fvt2环境,是可以build出来ejb的,ejb的source也没有修改过,怎么就build不出来了呢。(以前也碰到过,再build一次就好了,所以没有追究)

build出错的trace:

WCBD build EJB error_EJB_02

想查看原因是不可能的,因为server上根本就没有trace中说的这个path:f26868ea
 
怀疑是环境的问题造成的,通过下面的测试
 
bmw
gri
fvt1
n
y
fvt2
n
y
 
排除是环境的问题,那就是ejb source的问题了,接下来验证是否是ejb source的问题引起的,把可以进行正常build的ejb project copy到 fvt2的环境中,发现还是不行,哎。。。
那可能就是抓下来的source中其他project引起的问题?一个偶然的眼神,看到trace中有大量birt project引用的jar包,长的还比较像tookit环境中的jar:

WCBD build EJB error_WCBD_04

难道罪魁祸首是它,接下来的实验证实,确实是birt惹的祸!

这个error不好排查的原因是,build ejb 出错,却是由另一个不相干的web project 引起的。
原因可能是这样的,wcbd build 有自己的lib库和classpath,从svn上抓下来的code,也有lib和classpath,就这样把wcbd build自身的给覆盖了,所以对build出来的ejb进行归档的时候,老是报错。
(这里说一下,ejb build的过程是这样的,分为两步,第一步,compile从svn抓下来的代码生成xxxx.input.jar的文件,第二步,archive,会从wcbd lib库中生成一些_EJSRemoteStatelessExtensionJDBCHelper_35de5126_Tie.class ,EJSStatelessExtensionJDBCHelperHomeBean_35de5126.class 等文件合并到ejb jar中,这个错误就是出在第二步。)