很长一段时间没做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>就可以了。

问题三:

乱码

解决方法

请参考另一篇文章:AppFuse 3的乱码问题


建议

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

AppFuse 3常见问题与解决方法相关推荐

  1. WIN7 常见问题及解决方法

    -------------------------------------------------------------- .★常见问题及解决方法 1.安装过程中出现一下的错误信息提示: Windo ...

  2. hive常见问题及解决方法

    Hive常见问题及解决方法 问题1:Specified key was too long; max key length is 1536 bytes     hive.log :  2018-01-0 ...

  3. nacos 集群_Nacos 常见问题及解决方法

    Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...

  4. c转义字符以及常见问题和解决方法||c中的注释

    常见问题和解决方法 vs2010编辑器 显示行号 c中的注释 自己配置vs2010注释的快捷键 注:

  5. linux lw3m多行文本使用,linux常用命令以及一些常见问题和解决方法教程.docx

    linux常用命令以及一些常见问题和解决方法教程 端口以及ip之间抓包1.监视指定网络接口的数据包tcpdump -i eth1如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0 ...

  6. ArcGIS Engine 10 开发常见问题的解决方法

    ArcGIS Engine 10 开发常见问题的解决方法 You are not Licensed for 弹出提示框,点击确定,VS工程自动关闭 http://www.cnblogs.com/Ris ...

  7. mysql开发问题解决_开发过程中mysql常见问题的解决方法

    本篇文章给大家带来的内容是关于开发过程中mysql常见问题的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 记录开发过程中遇到mysql相关的问题以及解决方法,长期更新. 远 ...

  8. honeywell扫码枪取消回车_霍尼韦尔条码扫描器常见问题与解决方法

    原标题:霍尼韦尔条码扫描器常见问题与解决方法 对于用户使用无线条码扫描器还是有线,再使用过程中难免会遇到一些小问题,又不知道这么解决,下面兆麟条码技术部提供一些条码扫描器出现的问题以及解决方法,供大家 ...

  9. 饥荒进地洞服务器无响应,饥荒联机洞穴设置及常见问题的解决方法

    进阶篇 服务端mod设置: 首先 (1)下载好要用mod,然后下载通用工具,解压放到DST的mod文件夹里运行 (2)此时在文档\Klei\DoNotStarveTogether会多出一个文件modo ...

最新文章

  1. fiddler及postman讲解
  2. boost::mpl模块bind相关的测试程序
  3. 您的UX库不只是书籍
  4. 阅读众包文献中一些值得mark 的小收获
  5. 三星Galaxy Tab S8系列国行版曝光:对标iPad Pro的旗舰平板
  6. Python菜鸟入门:day19编程学习
  7. js/jquery 获取本地文件的文件路劲 获取input框中type=‘file’ 中的文件路径(转载)...
  8. java map集合使用_JAVA中Map集合的使用举例
  9. jquery 源码分析
  10. 省会城市房价地图,这9座新星城市正在悄然崛起
  11. python折线图实线虚线_python – matplotlib中的虚线而不是缺失值
  12. cad pu插件下载lisp_25个常用CAD插件 合集 下载
  13. div 和table
  14. 低压电力线宽带载波通信互联互通技术规范第4-2部分:数据链路层通信协议
  15. 我的服务器开发之路-服务器SSH默认端口22和ftp默认端口21修改
  16. wireshark TCP协议首选项配置详解
  17. 关于深度优先遍历和广度优先遍历的一些深入思考
  18. Java8 Stream流 - 高效快速的处理集合
  19. 2015网龙产品策划暑期实习心得
  20. uniapp无网络提示

热门文章

  1. Linux系统用户权限的基本权限UGO
  2. mybatis-plus入门,熟练掌握 MyBatis-Plus,一篇就够!
  3. Java中getPath与getAbsolutePath区别
  4. 第32天学习打卡(字符流读写文件,字节流读写文件)
  5. 服务器系统备份和还原,服务器操作系统备份和还原
  6. matlab图像区域填充的原理_MATLAB图像分析
  7. 【古琴知识】古琴的样式寓意及其与音色之间的关系
  8. 操作系统仿真实验(YTU)
  9. 安装Ubuntu 20.04 LTS服务器
  10. centos监控服务器状态,荒村野客-CentOS安装zabbix-agent监控服务器运行状态