2010-10-20 3 views
1

je suivais le guide http://appfuse.org/display/APF/Using+Struts+2 pour faire un site appfuse simple, mais j'ai eu une erreur lors de la compilation avec Maven, qui rapporte org.appfuse.webapp.action.BaseAction n'existe pas.l'importation org.appfuse.webapp.action.BaseAction ne peut pas résoudre

J'ai cherché beaucoup de google avec aucune chance, quelqu'un peut-il me donner des conseils, apprécier pour n'importe quelle aide, idée ou conseiller. Thankyou

deux maven 2.2.1 et 3 produit même erreur: utilisant archétype: appfuse-struts-base-archétype, v.2.1.0-M1

commande maven:

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

à ce pt, test mvn ou jetée: run-war n'ont pas généré d'erreur.

cependant, quand j'ajouter 2 classes (PersonActionTest et PersonAction) comme ci-dessous, il ne parviennent pas à compiler

PersonActionTest: src \ test \ java \ com \ mycompany \ webapp \ webapp \ 'action

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 \ main \ java \ com \ mycompany \ webapp \ webapp \ 'action

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; 
    } 
} 

Message d'erreur:

[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] ^^^^^^^^^^^^^^^^^ 

tronquée comme le reste de msg est similaire

Merci ~

steven

+0

Vous devez fournir plus de détails. Avez-vous utilisé un archétype? Si oui, fournissez la commande. Avez-vous vérifié les sources? Si oui, fournissez la commande. –

+0

Merci, l'information détaillée a été postée – Mythox

Répondre

0

Je ne suis pas un expert AppFuse (par cela, je veux dire que Je ne suis pas au courant de tous les détails des changements et des problèmes existants) mais le projet généré en utilisant la version 2.1.0-M1 de l'archétype manque l'artefact appfuse-struts (qui fournit o.a.w.a.BaseAction).

J'ai essayé de l'ajouter manuellement mais j'ai ensuite rencontré un autre problème de résolution d'artefacts (une dépendance transitive non trouvée) et j'ai tout simplement abandonné.

Cependant, le projet que vous obtiendriez en utilisant l'previous version de l'archétype (c.-à-2.0.2) semble correct et ma recommandation serait d'utiliser cette version à la place:

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

Merci Pascal, j'ai eu une autre erreur quand j'utilise 2.0.2 sans importer o.a.w.a.BaseAction, il y a une erreur sur le test mvn immédiatement après la commande mvn archetype. [ERREUR] Échec de l'exécution de l'objectif org.codehaus.mojo: aspectj-maven-plugin: 1.0: compilation (par défaut) sur le projet myproject: L'objet org.springframework: aspect du ressort s référencé dans le plugin aspectj comme une bibliothèque d'aspects, est pas trouvé les dépendances du projet -> [Help 1] does 2.0.2 fonctionne bien sur votre ordinateur? – Mythox

+0

@Mythox Non, je ne sais pas comment j'ai raté ce problème, j'ai testé le projet avant de poster. En tout cas ... j'ai vu un mail disant que si vous n'utilisez pas les aspects, vous pouvez commenter la section aspectj-maven-plugin, ce que j'ai fait. Mais j'ai ensuite fait face à un autre problème. Honnêtement, l'appfuse m'énerve maintenant et je ne vais pas passer plus de temps dessus. Désolé de ne pas être plus utile, mais je suggère de poster sur la liste de diffusion appfuse. Je vais retirer ma réponse bientôt. –

+0

Merci beaucoup Pascal, je suivais en fait le livre "flex on Java", personnellement je n'ai pas d'intérêt particulier sur Appfuse mais je voulais apprendre le Flex. Je pense que je vais avoir un autre livre pour apprendre le Flex d'une meilleure façon, merci encore ^^ – Mythox

2

Je sais que ce fil est assez vieux, mais j'ai eu cette erreur plusieurs fois maintenant, donc je veux partager ma solution. J'ai récemment eu cette erreur dans le paramètre suivant. * Il y a un projet, disons Util, qui importe une bibliothèque, par exemple, dbcp * Un autre projet, disons App, dépend de Util et des aspects doivent être appliqués à ce projet. * J'ai ajouté une nouvelle classe à App, qui utilise une dépendance transitive, par exemple, la nouvelle classe C implémente une classe abstraite de dbcp. Parce que App dépend de Util, dbcp est visible dans eclipse et tout va bien.Toutefois, lorsque je compile mon projet sur la ligne de commande à l'aide de mvn install, le plugin aspectj échoue en indiquant que l'importation à partir de dbcp n'a pas pu être résolue. * Y compris une dépendance directe de App à dbcp résout le problème (pour moi). Ainsi, aspectj n'utilise pas les dépendances transitives alors que le plugin du compilateur java le fait. Probablement, la position de la nouvelle classe C n'est pas la position "optimale", elle devrait être déplacée vers le projet Util mais c'est un problème différent.

L'espoir qui aide tous ceux qui viennent à ce sujet.

Questions connexes