AppFuse 3常见问题与解决方法

很长一段时间没做SSH项目了,最近抽空看了一下升级到3.x的appfuse,对新版本使用过程中出现的一些问题进行了排查,汇总如下,以备后用。本文原文出处: http://blog.csdn.net/bluishglc/article/details/38640715 严禁任何形式的转载,否则将委托CSDN官方维护权益!

起步

使用appfuse的第一步自然是通过archetype:generate生成项目。这本不是一问题,官方的QuickStart:http://appfuse.org/display/APF/AppFuse+QuickStart 页面上给出了帮助我们生成archetype:generate命令行的工具,不幸的是这个页面引用了一些位于googleapis.com上的js文件,中国的小朋友们可能获取不了这些文件(原因你懂的),至少在写作这篇文章的时候googleapis.com是无法从国内访问的。如果缺少这些JS文件,页面就不能自动生成命令行了,虽然这个命令本身并不复杂,但是手写出它的archetypeRepository地址和archetypeArtifactId还是很费力的,下面给出四个示例,可依此为蓝本进行修改:

示例一:建立名称为demo的基于spring mvc+spring+hibernate的单一工程,appfuse版本:3.0.0

mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring-archetype -DarchetypeVersion=3.0.0 -DgroupId=com.yourcompany -DartifactId=demo -DarchetypeRepository=https://oss.sonatype.org/content/repositories/appfuse 

示例二:建立名称为demo的基于spring mvc+spring+hibernate的单一工程,appfuse版本:3.0.1-SNAPSHOT

mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring-archetype -DarchetypeVersion=3.0.1-SNAPSHOT -DgroupId=com. yourcompany -DartifactId=demo -DarchetypeRepository=https://oss.sonatype.org/content/repositories/appfuse

示例三:建立名称为sample的基于spring mvc+spring+hibernate的多模块工程,appfuse版本:3.0.0

mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-spring-archetype -DarchetypeVersion=3.0.0 -DgroupId=com. yourcompany -DartifactId=sample -DarchetypeRepository=https://oss.sonatype.org/content/repositories/appfusec 

示例四:建立名称为sample的基于spring mvc+spring+hibernate的多模块工程,appfuse版本:3.0.1-SNAPSHOT

mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-modular-spring-archetype -DarchetypeVersion=3.0.1-SNAPSHOT -DgroupId=com. yourcompany -DartifactId=sample -DarchetypeRepository=https://oss.sonatype.org/content/repositories/appfusec

生成项目之后,按照官方文档的指导很容易就可以build并运行新建立起来的工程了,但是如果你不走运的话,就可能会遇到如下一些问题:

问题与解决方法

问题一:

使用3.0.0版本,执行mvn appfuse:full-source失败,使用 mvn appfuse:full-source -e查看错误信息,报如下错误:

[ERROR] Failed to execute goal org.appfuse.plugins:appfuse-maven-plugin:3.0.0:full-source (default-cli) on project demo: Execution default-cli of
 goal org.appfuse.plugins:appfuse-maven-plugin:3.0.0:full-source failed: java.net.UnknownHostException: raw.github.com: Unknown host raw.github.com

解决方法:

对于该问题,appfuse的作者在http://appfuse.547863.n4.nabble.com/Appfuse-failed-to-get-full-source-td4657086.html 中给出了解释,原因是github更改的子域名导致的。为此作者新建了一个3.0.1-SNAPSHOT版本来解决这一问题。就我个人的使用情况来看这是一个很奇怪的问题,第一次执行mvn appfuse:full-source确实遇到了这一问题,第二天就没有问题了,理论上raw.github.com会重定向到新的目标域名,但是看起来受到网络以及配置的种种原因,这个问题确实是有可能发生的。不过使用3.0.1-SNAPSHOT版本并非是一个好的解决方法,接下来的常见问题二就是发生在3.0.1-SNAPSHOT版本上的。

问题二: 

使用3.0.1-SNAPSHOT版本,执行mvn jetty:run时报如下错误:

java.lang.IllegalStateException: org.slf4j.LoggerFactory could not be successfully initialized.

解决方法:

这个问题确实是开发者给使用者挖的一个“坑”,仅仅从报错日志上很难找到直接原因,但是日志中的一行信息:

An API incompatibility was encountered while executing org.eclipse.jetty:jetty-maven-plugin:xxxxxx:run: java.lang.ExceptionInInitializerError: null

多少还是给了我们一些线索,检查使用3.0.1-SNAPSHOT版本生成的pom.xml文件,我们发现jetty插件的配置是这样的:

<plugin>
	<groupId>org.eclipse.jetty</groupId>
	<artifactId>jetty-maven-plugin</artifactId>
	<version>8.1.14.v20131031</version>
	<configuration>
		<webApp>
			<contextPath>/</contextPath>
		</webApp>
	</configuration>
</plugin>

再仔细地检查,我们就会发现jetty迁移eclipse之后,其版本是从9.0.0开始的,根本没有8.1.14.v20131031这个版本,而这个8.1.14.v20131031版本是怎么来的呢?看看3.0.0的pom.xml我们找到了答案:

<plugin>
	<groupId>org.mortbay.jetty</groupId>
	<artifactId>jetty-maven-plugin</artifactId>
	<version>8.1.14.v20131031</version>
	<configuration>
		<webApp>
			<contextPath>/</contextPath>
		</webApp>
	</configuration>
</plugin>

8.X版本的jetty还是其在mortbay下时的版本。很显然,作者在从3.0.0向3.0.1-SNAPSHOT升级的时候,配错了jetty的版本!这样,解决方法也就出来了,把插件配置中的<groupId>org.eclipse.jetty</groupId>改为<groupId>org.mortbay.jetty</groupId>就可以了。

建议

由于3.0.1-SNAPSHOT尚处于开发阶段,在不同时期使用可能会出现不同的问题,前文提及的第二个问题就是一个例子,因此建议先使用3.0.0版。

AppFuse 3常见问题与解决方法

时间: 2024-12-25 17:35:31

AppFuse 3常见问题与解决方法的相关文章

NHibernate常见问题及解决方法

NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end-of-text> (possibly an invalid or unmapped class name was used in the query)."错误查了好半天终于查到了.这篇文章是我转载的NHibernate的常见错误... hbm.xmlNHibernate文件中版本号可能引起的

Android项目:proguard混淆之常见问题及解决方法汇总

1.使用proguardgui混淆器对jar包进行混淆,出现EXCEPTION FROM SIMULATION错误: [2014-07-08 14:29:55 - Test024_HouseBox_v02_jar] Dx  EXCEPTION FROM SIMULATION: [2014-07-08 14:29:55 - Test024_HouseBox_v02_jar] Dx local variable type mismatch: attempt to set or access a va

WebServices生成发布过程及常见问题的解决方法

春夏秋冬走健康之路看四季养生网 健康饮食 养生问题 母婴保健 养生小常识 3.下一步,我们需要将Myservice文件夹拷贝到C:\Inetpub\wwwroot目录下(重要).如下图所示  然后依次右击“我的电脑”->“管理”->“服务和应用程序”->“Internet信息服务(IIS)管理器”打开IIS管理器,或者在控制面板中,通过“管理工具”打开“Internet信息服务(IIS)管理器”,如下图所示 展开“网站”节点,右键点击“默认网站”节点,依次选择“新建”->“虚拟目录

银河麒麟操作系统常见问题及解决方法(四)

银河麒麟操作系统常见问题及解决方法(四)                                     ——激活问题   银河麒麟操作系统是国防科大唯一授权给天津麒麟信息技术有限公司的国产Linux操作系统,支持x86架构,唯一支持飞腾CPU. 银河麒麟操作系统作为国内等级最高的操作系统,源自国家“十五”科技重大专项研究成果.经过十余年的发展,形成了服务器.桌面.实时.云.存储五大系列操作系统产品,以及高性能计算.云计算和云桌面等产品. 由于银河麒麟操作系统的广泛应用,用户体验过程中难

银河麒麟操作系统常见问题及解决方法(一)

银河麒麟操作系统常见问题及解决方法(一) 银河麒麟操作系统是国防科大唯一授权给天津麒麟信息技术有限公司的国产Linux操作系统,支持x86架构,唯一支持飞腾CPU. 银河麒麟操作系统作为国内等级最高的操作系统,源自国家"十五"科技重大专项研究成果.经过十余年的发展,形成了服务器.桌面.实时.云.存储五大系列操作系统产品,以及高性能计算.云计算和云桌面等产品. 由于银河麒麟操作系统的广泛应用,用户体验过程中难免会遇到一些问题,接下来就银河麒麟操作系统的安装问题及版本问题送上解决方法(以下

Tcp编程常见问题及解决方法总结

问题1.粘包问题 解决方法一:TCP提供了强制数据立即传送的操作指令push,TCP软件收到该操作指令后,就立即将本段数据发送出去,而不必等待发送缓冲区满: 解决方法二:发送固定长度的消息 解决方法三:把消息的尺寸与消息一块发送 解决方法四:双方约定每次传送的大小 解决方法五:双方约定使用特殊标记来区分消息间隔 解决方法六:标准协议按协议规则处理,如Sip协议 问题2.字符串编码问题 将中文字符串用utf8编码格式转换为字节数组发送时,一个中文字符可能会占用2-4个字节(假设为3个字节),这3个

appframework学习--appframework开发常见问题及解决方法(不定期更新)

1.页面跳转错误:Uncaught TypeError: Cannot read property 'afCSS3AnimateId' of undefined 原因:data-defer=""  跳转路径不正确 解决:路径正确即可 2.程序正在启动的圈圈一直 原因:转id冲突,出现重名id 解决:id冲突,出现重名id appframework学习--appframework开发常见问题及解决方法(不定期更新)

webpack构建工具常见问题及解决方法

webpack构建工具常见问题及解决方法 在运用webpack开发项目的时候经常会遇到各种各样的问题,我对实际开发项目中实际遇到的一些问题 进行总结,希望能帮助到大家. ?? 1. 构建需要的包未添加依赖报错 Module not found:"xxx(例:react)" in "项目文件" ??这种情况是由于"xxx(例:react)"未添加依赖,解决办法如下: npm install xxx(react) --save 或 yarn add

mysql5.6配置同步复制的新方法以及常见问题的解决方法

mysql5.6新增一种不用设置log_bin文件和log位置的方法,之前我们都需要查看master机器信息(show master status),然后在slave设置 master_host='10.163.213.228',master_user='repl',master_password='sangfordb',master_log_file='mysql-bin.000015',master_log_pos=193952; 使用mysql5.6后可以不用这种方法配置了,只要设置my.