通过AppFuse创建ssh工程问题总结
一、安装Maven及m2eclipse插件
这部分Maven的安装比较简单,不再详述。m2eclipse的安装有一些注意事项,参看如下文章:
http://up2pu.iteye.com/blog/1019251
m2eclipse的新版本还不稳定,创建appfuse工程时可能会出现问题。请按照上面的方法安装稳定版本。
二、创建appfuse工程
以Eclipse 3.6.2举例说明如下:
File->New->Other->Maven->Maven Project->Select an Archetype->appfuse-light-struts-archetype(当前版本是2.1.0)->输入Group Id,Artifact Id,Package->Finish
appfuse针对不同框架,提供了light版和basic版的项目模板,light版是简单版本,只有基本功能,basic版是扩展版本,提供了安全性支持,密码找回等常用功能。
三、问题解决方法
1.Hibernate dtd问题
错误信息:
Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl (default) on project light: Execution default of goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl failed: Could not parse configuration: file:/F:/workspace3.5/light/src/main/resources/hibernate.cfg.xml: Connection timed out: connect Nested exception: Connection timed out: connect -> [Help 1]
解决方法:
在hibernate.cfg.xml中将以下内容注释掉
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
使用如下内容
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
2.MySQL配置问题
错误信息:
ERROR - SchemaExport.execute(274) | schema export unsuccessful
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:545)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
at org.hibernate.tool.hbm2ddl.ManagedProviderConnectionHelper.prepare(ManagedProviderConnectionHelper.java:52)
at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:252)
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:211)
at org.codehaus.mojo.hibernate3.exporter.Hbm2DDLExporterMojo.doExecute(Hbm2DDLExporterMojo.java:112)
at org.codehaus.mojo.hibernate3.HibernateExporterMojo.execute(HibernateExporterMojo.java:152)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:107)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:365)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:199)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:534)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
解决方法:
AppFuse默认不使用MySQL,如果使用MySql需要做如下修改:
1> jdbc.properties注释掉H2配置部分,使用MySQL配置
mvn install:install-file -DgroupId=org.apache.maven.surefire -DartifactId=surefire-booter -Dversion=2.4.3 -Dpackaging=jar -Dfile=E:\software\dev\Maven\appfuse_basic_struts_missing_jar\surefire-booter-2.4.3.jarmvn install:install-file -DgroupId=org.apache.maven.surefire -DartifactId=surefire-api -Dversion=2.4.3 -Dpackaging=jar -Dfile=E:\software\dev\Maven\appfuse_basic_struts_missing_jar\surefire-api-2.4.3.jarmvn install:install-file -DgroupId=org.codehaus.plexus -DartifactId=plexus-utils -Dversion=1.5.1 -Dpackaging=jar -Dfile=E:\software\dev\Maven\appfuse_basic_struts_missing_jar\plexus-utils-1.5.1.jarmvn install:install-file -DgroupId=junit -DartifactId=junit -Dversion=4.0 -Dpackaging=jar -Dfile=E:\software\dev\Maven\appfuse_basic_struts_missing_jar\junit-4.0.jar
9.appfuse-basic-struts-archetype工程中使用mvn install,test报错
错误描述:
ERROR - JDBCExceptionReporter.logExceptions(234) | Duplicate entry 'matt@raibledesigns.com' for key 'email'
ERROR - AbstractFlushingEventListener.performExecutions(324) | Could not synchronize database state with session
解决方法:
有人已经提交了该bug,回复是不修改,参见下面链接
http://issues.appfuse.org/browse/APF-1253
10.关于ojdbc14.jar
错误描述:
Could not find artifact com.oracle:ojdbc14:jar:10.2.0.4.0 in central
解决方法:
网上有很多人已经说了原因及解决方法,因为版权问题,Maven库不能发布ojdbc14.jar。可以通过手工安装的方法,将ojdbc14.jar安装到本地库。
>mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14-Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=E:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar
但是如果手工安装之后还是不好使怎么办,按照以下步骤操作即可:
1>删除以下的文件夹和文件
.m2\repository\com\oracle\ojdbc14\10.2.0.4.0
.m2\repository\com\oracle\ojdbc14\maven-metadata-local.xml
2>按照上面的方法重新手动安装ojdbc14.jar
11.下载jar包对应源代码
mvn dependency:sources
下一篇地址:http://up2pu.iteye.com/blog/1254093 1 楼 readythink 2011-06-21 谢谢!解决了问题. 2 楼 up2pu 2011-06-22 readythink 写道谢谢!解决了问题.
很高兴对您帮助