2010-10-20 31 views
1

我按照指南http://appfuse.org/display/APF/Using+Struts+2制作了一个简单的appfuse网站,但是在编译Maven时报错了,它报告了org.appfuse.webapp.action.BaseAction不存在。import org.appfuse.webapp.action.BaseAction无法解析

我搜索了很多从谷歌没有运气,任何人都可以给我一个提示,欣赏任何帮助,想法或建议。三江源

既行家2.2.1和3中产生相同的错误:在使用原型 :AppFuse的碱性-支杆-原型,v.2.1.0-M1

行家命令:

mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes - 
DarchetypeArtifactId=appfuse-basic-struts-archetype -DarchetypeVersion=2.1.0-M1 
-DgroupId=com.mycompany -DartifactId=myproject 

at this pt,mvn test or jetty:run-war没有提出错误。

然而,当我加2类(PersonActionTest和的PersonAction)如下,它无法编译

PersonActionTest: SRC \测试\ java中\ COM \ myCompany中\ web应用\ web应用\动作

package com.mycompany.webapp.action; 


import com.opensymphony.xwork2.ActionSupport; 
import org.apache.struts2.ServletActionContext; 
import org.appfuse.service.GenericManager; 
import org.appfuse.tutorial.model.Person; \\this fails to compile 
import org.appfuse.webapp.action.BaseActionTestCase; \\this fails to compile 
import org.springframework.mock.web.MockHttpServletRequest; 

public class PersonActionTest extends BaseActionTestCase { 
    private PersonAction action; 

    @Override 
    protected void onSetUpBeforeTransaction() throws Exception { 
     super.onSetUpBeforeTransaction(); 
     action = new PersonAction(); 
     GenericManager personManager = (GenericManager) applicationContext 
       .getBean("personManager"); 
     action.setPersonManager(personManager); 

     // add a test person to the database 
     Person person = new Person(); 
     person.setFirstName("Jack"); 
     person.setLastName("Raible"); 
     personManager.save(person); 
    } 

    public void testSearch() throws Exception { 
     assertEquals(action.list(), ActionSupport.SUCCESS); 
     assertTrue(action.getPersons().size() >= 1); 
    } 
} 

的PersonAction:的src \主\ java中的\ com \ myCompany的\ web应用程序\ web应用程序\行动

package com.mycompany.webapp.action; 


import org.appfuse.webapp.action.BaseAction; \\this fails to compile 
import org.appfuse.tutorial.model.Person; \\this fails to compile 
import org.appfuse.service.GenericManager; 

import java.util.List; 

public class PersonAction extends BaseAction { 
    private GenericManager<Person, Long> personManager; 
    private List persons; 

    public void setPersonManager(GenericManager<Person, Long> personManager) { 
     this.personManager = personManager; 
    } 

    public List getPersons() { 
     return persons; 
    } 

    public String list() { 
     persons = personManager.getAll(); 
     return SUCCESS; 
    } 
} 

错误消息:

[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building AppFuse Struts 2 Application 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- aspectj-maven-plugin:1.2:compile (default) @ realtest --- 
[ERROR] The import org.appfuse.webapp cannot be resolved 
[ERROR] The import org.appfuse.tutorial cannot be resolved 
[ERROR] Person cannot be resolved to a type 
[ERROR] Person cannot be resolved to a type 
[ERROR] personManager cannot be resolved or is not a field 
[ERROR] personManager cannot be resolved 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.285s 
[INFO] Finished at: Thu Oct 21 09:35:56 CST 2010 
[INFO] Final Memory: 6M/27M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.2:compil 
e (default) on project realtest: Compiler errors : 
[ERROR] error at import org.appfuse.webapp.action.BaseAction; 
[ERROR] ^^^^^^^^^^^^^^^^^ 

截断味精的其余部分类似于

谢谢〜

史蒂芬

+0

您需要提供更多详细信息。你使用了一个原型吗?如果是,请提供命令。您是否结帐来源?如果是,请提供命令。 – 2010-10-20 22:02:15

+0

谢谢,详细信息已发布 – Mythox 2010-10-21 01:52:24

回答

0

我不是专家的AppFuse(由这一点,我的意思是我不知道所有更改和现有问题的详细信息),但使用原型版本2.1.0-M1生成的项目会遗漏appfuse-struts工件(它提供了o.a.w.a.BaseAction)。

我试图手动添加它,但后来遇到了一些其他工件解决问题(传递依赖没有找到),只是放弃了。

但是,你会得到使用原型的previous version项目(即2.0.2版本)看起来不错,我的建议是使用这个版本来代替:

mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes \ 
    -DarchetypeArtifactId=appfuse-basic-struts \ 
    -DarchetypeVersion=2.0.2 \ 
    -DgroupId=com.mycompany \ 
    -DartifactId=myproject 
+0

感谢帕斯卡尔,当我使用2.0.2而没有导入o.a.w.a.BaseAction时出现了另一个错误,它在mvn archetype命令后立即执行mvn测试时出错。 [错误]无法执行目标org.codehaus.mojo:aspectj-maven-plugin:1.0:对项目myproject编译(默认):artifact org.springframework:spring-aspect 在aspectj插件中作为方面库引用未找到项目依赖关系 - > [Help 1] 2.0.2在您的计算机上运行良好吗? – Mythox 2010-10-23 05:26:03

+0

@Mythox不,我不知道我错过了这个问题,我在发布之前测试了这个项目。无论如何...我看到一封邮件说如果你不使用方面,你可以注释掉我所做的aspectj-maven-plugin部分。但我然后面临另一个问题。老实说,appfuse现在正在让我紧张,我不会花更多时间在它上面。对不起,没有更多的帮助,但我建议发布在appfuse邮件列表上。我会很快删除我的答案。 – 2010-10-23 13:05:40

+0

非常感谢Pascal,我实际上是在关注“flex on Java”一书,我个人对Appfuse没有特别的兴趣,但想学习Flex。我想我会得到另一本书以更好的方式学习Flex,再次感谢^^ – Mythox 2010-10-23 17:55:59

2

我知道这个线程很旧,但我现在有几次这个错误,所以我想分享我的解决方案。 我最近在下面的设置中得到了这个错误。 *有一个名为Util的项目,用于导入一个库,例如dbcp *另一个项目,比如App,依赖于Util,方面将应用于该项目。 *我向App添加了一个新类,它使用传递性依赖项,例如,新类C从dbcp实现了一些抽象类。因为应用程序依赖于Util,所以在eclipse中dbcp是可见的,一切都很好。但是,当我使用mvn install在命令行上编译我的项目时,aspectj插件失败,并声明从dbcp导入无法解析。 *包括从应用程序到dbcp的直接依赖关系解决了这个问题(对我来说)。

因此,aspectj在java编译器插件没有使用传递依赖关系时不使用。可能新C类的位置不是“最优”的,它应该移到Util项目,但这是一个不同的问题。

希望可以帮助任何人来到这个线程。

相关问题