我在DZone上找到了this很酷的帖子:
我想尝试一下。 我一步一步地按照这个例子,它对我来说很有用。在不到5分钟的时间里,我开始编写并运行该Web应用程序。
我决定创建自己的应用程序只是为了好玩。但它没有用,我不明白为什么会这样。我相信我以完全相同的方式做了所有事情,但只使用我自己的变量名称。 以下是我所做的每一件事:
1-从我的linux终端创建了一个文件夹并导航到它
mkdir whatsup
cd whatsup
2-我启动了roo shell开始工作(我的ROO_HOME配置正确)
/roo.sh
/ __ \/ __ \/ __ \ / /_/ / / / / / / / / _, _/ /_/ / /_/ / /_/ |_|\____/\____/ 1.2.1.RELEASE [rev 6eae723] Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
3-我创建了项目定义
roo> project --topLevelPackage com.hack --projectName whats-up
Created ROOT/pom.xml Created SRC_MAIN_RESOURCES Created SRC_MAIN_RESOURCES/log4j.properties Created SPRING_CONFIG_ROOT Created SPRING_CONFIG_ROOT/applicationContext.xml
4-我启用了持久层
roo> persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
创建了SPRING_CONFIG_ROOT / database.properties已更新 SPRING_CONFIG_ROOT / applicationContext.xml已创建 SRC_MAIN_RESOURCES / META-INF / persistence.xml更新了ROOT / pom.xml [添加依赖项org.hsqldb:hsqldb:1.8.0.10, org.hibernate作为:休眠核心:3.6.9.Final, org.hibernate作为:休眠-的EntityManager:3.6.9.Final, org.hibernate.javax.persistence:休眠-JPA-2.0-API:1.0.1.Final, org.hibernate作为:休眠-验证:4.2.0.Final, javax.validation:validation-api:1.0.0.GA,cglib:cglib-nodep:2.2.2, javax.transaction的:JTA:1.1, org.springframework:弹簧的jdbc:$ {} spring.version, org.springframework:弹簧ORM:$ {} spring.version, commons-pool:commons-pool:1.5.6,commons-dbcp:commons-dbcp:1.3]
5-我创建了我的第一个实体
roo> entity jpa --class ~.domain.Message
创建SRC_MAIN_JAVA / com / hack / domain已创建 SRC_MAIN_JAVA / com / hack / domain / Message.java已创建 SRC_MAIN_JAVA / com / hack / domain / Message_Roo_Configurable.aj创建 SRC_MAIN_JAVA / com / hack / domain / Message_Roo_ToString.aj已创建 SRC_MAIN_JAVA / com / hack / domain / Message_Roo_Jpa_ActiveRecord.aj创建 SRC_MAIN_JAVA / COM /黑客/域/ Message_Roo_Jpa_Entity.aj
6-我将字段添加到实体
~.domain.Message roo> field number --fieldName votes --type java.lang.Integer --notNull
更新了SRC_MAIN_JAVA / com / hack / domain / Message.java已创建 SRC_MAIN_JAVA / COM /黑客/域/ Message_Roo_JavaBean.aj
7-将网络图层包含到我的项目中
~.domain.Message roo> web jsf setup --implementation APACHE_MYFACES --theme PEPPER_GRINDER
创建ROOT / src / main / webapp创建ROOT / src / main / webapp / index.html 创建了ROOT / src / main / webapp / viewExpired.xhtml创建 ROOT / src / main / webapp / resources / images创建 ROOT / src目录/主/ web应用/资源/图像/ csv.png
创建了com.hack.jsf.converter.MessageConverter ROOT / src / main / webapp / resources / images / de.png创建 ROOT / src / main / webapp / resources / images / en.png创建 ROOT / src / main / webapp / resources / images / es.png创建 ROOT / src / main / webapp / resources / images / excel.png创建 ROOT / src / main / webapp / resources / images / favicon.ico创建 ROOT / src / main / webapp / resources / images / pdf.png创建 ROOT / src / main / webapp / resources / images / roo_logo.png创建 ROOT / src / main / webapp / resources / images / springsource-logo.png创建 ROOT / src / main / webapp / resources / images / xml.png创建 ROOT / src / main / webapp / resources / css创建 ROOT / src / main / webapp / resources / css / standard.css创建 ROOT / src / main / webapp / resources / js已创建 ROOT / src / main / webapp / resources / js / calendar.js已创建 ROOT / src / main / webapp / templates已创建 ROOT / src / main / webapp / templates / content.xhtml创建 ROOT / src / main / webapp / templates / footer.xhtml创建 ROOT / src / main / webapp / templates / header.xhtml创建 ROOT / src / main / webapp / templates / layout.xhtml创建 ROOT / src / main / webapp / templates / menu.xhtml创建 ROOT / src / main / webapp / pages创建 ROOT / src / main / webapp / pages / main.xhtml更新了ROOT / pom.xml [已添加 依赖项org.apache.myfaces.core:myfaces-api:2.1.5, org.apache.myfaces.core:MyFaces的-IMPL:2.1.5, org.primefaces:primefaces:3.1, org.primefaces.themes:南大街:1.0.3, org.springframework:spring-web:$ {spring.version},javax.el:el-api:2.2, 公地文件上传:公地文件上传:1.2.2, 公共-10:公共-10:2.1;添加了存储库 http://repository.primefaces.org;增加依赖性 org.primefaces.themes:胡椒研磨机:1.0.3;将项目类型更新为 war]创建了SRC_MAIN_WEBAPP / WEB-INF SRC_MAIN_WEBAPP / WEB-INF / web.xml中
8-我执行了一个包
~.domain.Message roo> web jsf all --package ~.jsf
创建ROOT / src / main / resources / com / hack / jsf / i18n已创建 ROOT / src目录/主/资源/ COM /黑客/ JSF /国际化/ messages_de.properties 创建 ROOT / src目录/主/资源/ COM /黑客/ JSF /国际化/ messages_en.properties 创建 ROOT / src目录/主/资源/ COM /黑客/ JSF /国际化/ messages_es.properties 创建SRC_MAIN_JAVA / com / hack / jsf已创建 SRC_MAIN_JAVA / com / hack / jsf / MessageBean.java已创建 SRC_MAIN_JAVA / com / hack / jsf / converter已创建 SRC_MAIN_JAVA / com / hack / jsf / converter / MessageConverter.java创建 SRC_MAIN_WEBAPP / WEB-INF / faces-config.xml已创建 SRC_MAIN_JAVA / com / hack / jsf / ApplicationBean.java已创建 SRC_MAIN_JAVA / com / hack / jsf / util已创建 SRC_MAIN_JAVA / com / hack / jsf / util / LocaleBean.java创建 SRC_MAIN_JAVA / COM /黑客/ JSF / UTIL / ViewExpiredExceptionExceptionHandlerFactory.java 创建 SRC_MAIN_JAVA / com / hack / jsf / util / ViewExpiredExceptionExceptionHandler.java创建SRC_MAIN_WEBAPP / pages / message.xhtml创建 SRC_MAIN_JAVA / COM /黑客/ JSF / ApplicationBean_Roo_ApplicationBean.aj 创建了SRC_MAIN_JAVA / com / hack / jsf / ApplicationBean_Roo_Configurable.aj 创建 SRC_MAIN_JAVA / COM /黑客/ JSF /转换器/ MessageConverter_Roo_Converter.aj 创建 SRC_MAIN_JAVA / com / hack / jsf / converter / MessageConverter_Roo_Configurable.aj创建了SRC_MAIN_JAVA / com / hack / jsf / MessageBean_Roo_Serializable.aj 创建了SRC_MAIN_JAVA / com / hack / jsf / MessageBean_Roo_Configurable.aj 创建了SRC_MAIN_JAVA / com / hack / jsf / MessageBean_Roo_ManagedBean.aj
9-退出了roo shell
~.jsf roo> quit
10-在linux终端上,我从项目内部运行了教程中建议的命令,在tomcat 7中执行
~/hackday/whatsup$ mvn package org.codehaus.cargo:cargo-maven2-plugin:run -Dcargo.maven.containerId=tomcat7x -Dcargo.maven.containerUrl=http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.22/bin/apache-tomcat-7.0.22.zip
这是尝试运行时的输出:
[INFO]扫描项目... [INFO]
[信息] -------------------------------------------------- ---------------------- [INFO]建筑物最高0.1.0.BUILD-SNAPSHOT [INFO] -------------------------------------------------- ----------------------下载: http://xxx.xx.xx.xx:8081/nexus/content/groups/public/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom 下载: http://maven.springframework.org/release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom 下载: http://maven.springframework.org/milestone/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom 下载: http://spring-roo-repository.springsource.org/release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom 下载: http://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom 下载: http://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.pom (636 B,3.3 KB /秒)下载: http://xxx.xx.xx.xx:8081/nexus/content/groups/public/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar 下载: http://maven.springframework.org/release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar 下载: http://maven.springframework.org/milestone/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar 下载: http://spring-roo-repository.springsource.org/release/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar 下载: http://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar 下载: http://repository.primefaces.org/org/primefaces/themes/pepper-grinder/1.0.3/pepper-grinder-1.0.3.jar (69 KB,155.3 KB /秒)[INFO] [INFO] --- aspectj-maven-plugin:1.2:编译(默认)@whats-up --- [错误] 方法findAllMessages()未定义类型Message [ERROR] 类型不匹配:无法从消息转换为消息[错误]类型 mismatch:无法从Message转换为Message [ERROR]方法 getId()未定义类型String [ERROR]方法merge()是 未定义类型String [错误]方法persist()是 未定义的类型String [WARNING]建议中定义 org.springframework.orm.jpa.aspectj.JpaExceptionTranslatorAspect有 尚未应用[Xlint:adviceDidNotMatch] [警告]中定义的建议 org.springframework.mock.staticmock.AnnotationDrivenStaticEntityMockingControl 尚未应用[Xlint:adviceDidNotMatch] [警告]建议 定义于 org.springframework.mock.staticmock.AbstractMethodMockingControl有 尚未应用[Xlint:adviceDidNotMatch] [警告]中定义的建议 org.springframework.mock.staticmock.AbstractMethodMockingControl有 尚未应用[Xlint:adviceDidNotMatch] [警告]中定义的建议 org.springframework.scheduling.aspectj.AbstractAsyncExecutionAspect 尚未应用[Xlint:adviceDidNotMatch] [INFO] -------------------------------------------------- ---------------------- [INFO] BUILD FAILURE [INFO] -------------------------------------------------- ---------------------- [INFO]总时间:15.525s [INFO]完成时间:Mon Jan 07 17:56:26 GMT 2013 [INFO]最终记忆:6M / 125M [INFO] -------------------------------------------------- ---------------------- [错误]无法执行目标 org.codehaus.mojo:aspectj-maven-plugin:1.2:编译(默认)on project whats-up:编译器错误:allMessages =的[ERROR]错误 Message.findAllMessages(); [错误] ^^^^^^ [错误] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:72:0::0 方法findAllMessages()未定义类型Message [ERROR] message = new Message(); [错误] [错误] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:198:0::0 类型不匹配:无法从消息转换为消息[错误]错误 message = new Message(); [错误] ^^^^ [错误] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:226:0::0 类型不匹配:无法从消息转换为消息[错误]错误 if(message.getId()!= null){[ERROR] [ERROR] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:233:0::0 对于类型为String [ERROR]错误,未定义方法getId() message.merge(); [错误] [错误] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:234:0::0 对于类型为String [ERROR]错误,未定义方法merge() message.persist(); [错误] [错误] /home/cleanuser/hackday/whatsup/src/main/java/com/hack/jsf/MessageBean_Roo_ManagedBean.aj:237:0::0 方法persist()未定义类型String [ERROR] - > [救命 1] [ERROR] [ERROR]要查看错误的完整堆栈跟踪,请重新运行 使用-e开关的Maven。 [错误]使用-X开关重新运行Maven 启用完整调试日志记录[错误] [错误]有关的更多信息 错误和可能的解决方案,请阅读以下文章: [错误] [帮助1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
我不知道如何让它发挥作用。 正如您所看到的,我的步骤与DZone教程完全相同,我不知道有什么不同。 有趣的是,他们的榜样有效,但我的确如此。
我也没试过运气:
mvn clean install
这将给我一个BUILD SUCCESS,但不能让它在服务器上运行
mvn tomcat:run
与其他命令
如果有人使用Spring Roo
与JSF
结合使用,我感谢您的帮助。
答案 0 :(得分:2)
看起来“Message”与自动生成的代码使用的某个名称冲突。你会尝试使用“MyMessage”吗?