阿u第四季:使用appfuse遇到的问题及解决办法

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 05:38:38
使用appfuse遇到的问题及解决办法2011-07-08 17:06

        花了一个星期,appfuse构建的项目终于在eclipse下面跑起来了,其间碰到了n多问题,步骤记录如下:

1.按照官网http://appfuse.org/display/APF/AppFuse+QuickStart+-+Chinese的步骤来,装好JDK6(注意:JDK5版本太低,会出问题)和Maven。

2.数据库我用的SQL SERVER2005,先建好一个空的数据库,名字跟项目的名字一致,我用的dm.

3.选web框架,如图:


4.看到 BUILD SUCCESSFUL 后,在项目的目录下找到pom.xml打开,将最后面的mysql数据库连接换成sqlserver的,修改密码;

里面加上这个:
            
                org.apache.maven.plugins
                maven-eclipse-plugin
                2.6
           

据说默认值是2.7,出问题。

5.在您的项目的目录中执行 mvn jetty:run-war。执行过程中会出错,然后停在某个地方不动了。这时查看数据库,表已经建好了,但是app_user这个表没法查看数据,估计是什么连接没有释放,重启数据库,可以查看app_user的数据了。

6.在您的项目的根目录运行 mvn appfuse:full-source,再运行mvn eclipse:eclipse(注意:不是mvn install eclipse:eclipse)。

7.打开myeclipse,导入工程。命令窗口可以关闭了,以后的工作都在myeclipse下进行。

8.打开src/main/resources下的jdbc.properties,将里面的内容填写正确(复制pom.xml里面的内容)。

9.准备部署到tomcat下面,工程名右键-》MyEclipse-》Add Web Project Capabilities

如图,Web Root Directory 选webapp,Create web.xml的勾去掉,j2EE选5.0.

10.部署到tomcat下面,启动tomcat,报错,slf4j版本太高,将slf4j-api-1.6.1.jar和jcl-over-slf4j-1.6.1.jar都换成1.5.6版的。

11.重新部署,重启tomcat,报错:java.lang.NoClassDefFoundError: org/aspectj/weaver/tools/PointcutExpression

缺包,引入aspectjweaver-1.6.10.jar。

12.重新部署,重启tomcat,报错:java.lang.IllegalArgumentException: No entities listed to be indexed, have you defined your entities correctly?

用到了compass,本人不会用,本项目也用不着,决定去掉compass:

a.删去对compass-2.2.0.jar的引用。

b.删去User.java和Address.java里面的相关内容。

c.删去GenericManagerImpl.java里面的public List search(String q, Class clazz)方法以及其他接口里面的该方法。

d.删去StartupListener.java里面的相关内容。

e.删去包edu.ctgu.webapp.search。

f.删去applicationContext-dao.xml和applicationContext.xml里面的相关内容。

13.重新部署,重启tomcat,报错:Exception sending context initialized event to listener instance of class edu.ctgu.webapp.jsp.EscapeXmlELResolverListener

不知道怎么解决,去掉:在web.xml里面注释掉

   
        edu.ctgu.webapp.jsp.EscapeXmlELResolverListener
   

14.重新部署,重启tomcat,终于不报错了。从浏览器访问,出错:Unable to read TLD "META-INF/displaytag.tld",Unable to read TLD "META-INF/c.tld"

包冲突,删除对servlet-api.jar jsp-api.jar的引用。

15.删掉后重新部署,重启tomcat,没有错误,从浏览器访问,终于出来了,但是页面上有乱码。

命令行敲命令native2ascii -encoding utf-8 native2ascii -encoding UTF-8 displaytag_zh_CN_input.properties displaytag_zh_CN.properties将ApplicationResources_zh_CN.properties,displaytag_zh_CN.properties,displaytag_zh_CN.properties将这三个文件转码。注意参数:-encoding UTF-8。再重启tomcat,终于正常了。

16.在src/main/webapp/WEB-INF下建文件夹lib,把tomcat下WEB-INF/lib里面的jar包全拷进去,删除对工程以外的jar包的引用(基本上都是本地maven仓库里的)。这样就可以上传到cvs上共享了。

 17.在命令窗口执行:mvn appfuse:gen-model命令,从数据库生成POJO,出错

      Can't generate same entities| org.hibernate.cfg.JDBCBinderException: Duplicate class name

      因为默认了去生成DBO和SYS等用户下的所有表和视图。出现了重名的POJO,所以报错。
      解决办法:target\test-classes\hibernate.reveng.xml  上面加入