文档章节

AppFuse 3常见问题与解决方法

猪刚烈
 猪刚烈
发布于 2014/10/12 11:39
字数 1170
阅读 31
收藏 0
很长一段时间没做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版。


本文转载自:http://blog.csdn.net/bluishglc/article/details/38640715

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
[笔记]使用AppFuse 2.1.0生成项目并解决几个问题

step1: 生成一个基本结构的项目 进入到http://appfuse.org/display/APF/AppFuse+QuickStart页面,在 Create a project下的Choose your Stack部分填写好项目基本信息。 我的示例如下: mvn ar...

leeoo
2011/12/24
0
0
[Java] Appfuse 最佳实践

前段时间刚写了《Catalyst Tutorial 最佳实践》,现在又手痒,给大家奉献这篇《Appfuse 最佳实践》,目的主要是趁这段相对比较空闲的时间,多写一些有用的教程,一方面在网上也看到过很多关于...

晨曦之光
2012/03/09
0
0
在eclipse中启动AppFuse应用

本文是根据官方教程中IDE部分,通过实际测试 eclipse导入appfuse生成的maven工程 前提:eclipse装maven插件,可在Help > Eclipse Marketplace里搜索关键字“maven”找到对应一堆插件,我安装...

银月光海
2013/06/19
0
0
[Java] Appfuse 源代码分析

前面《Appfuse & tapestry 小记》中介绍了Appfuse的基本使用和一些小实例,感觉不过瘾~使用这个第一次让我感觉到“轻量”的J2EE框架,的确有一种爱不释手的感觉~所以就索性另写一篇《Appfuse...

晨曦之光
2012/03/09
0
0
[Java] Appfuse & tapestry 小记

忙里抽闲在《Maven2小记》 之后准备把 Appfuse 的一些使用心得记录一下,以备参考: 简介:Appfuse是一个开放源码的项目和应用程序,它由 Matt Raible开发,它集成了流行的Spring、Hibernate...

晨曦之光
2012/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud SpringBoot mybatis分布式Web应用的统一异常处理

我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用...

itcloud
4分钟前
0
0
c++ std::bind和std::function

定义于头文件 <functional> std::bind 函数绑定,https://zh.cppreference.com/w/cpp/utility/functional/bind // bind 用例#include <iostream>#include <functional> // 自定义的一......

SibylY
7分钟前
0
0
SecureCRT的安装与破解(过程很详细!!!)

SecureCRT的安装与破解(过程很详细!!!) SecureCRT的安装与破解(过程很详细!!!) 使用SecureCRT可以方便用户在windows环境下对linux主机进行管理,这里为大家讲一下SecureCRT的破解方...

DemonsI
11分钟前
0
0
介绍几款可用的web应用防火墙

目前有两款,基于软件和基于应用程序的web应用防火墙。基于软件的产品布置在Web服务器上,而基于应用程序的产品放置在Web服务器和互联网接口之间。两种类型的防火墙都会在数据传入和传出web...

上树的熊
18分钟前
0
0
用Visual Studio开发以太坊智能合约

区块链和以太坊 自从我熟悉区块链、以太坊和智能合约以来,一直失眠。 我一直在阅读,阅读和阅读,最后我能够使用一些工具,他们建议使用以太坊网站官方客户端应用程序(Ethereum Wallet)也...

geek12345
20分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部