import org.appfuse.webapp.action.BaseAction не может разрешить - PullRequest
1 голос
/ 20 октября 2010

Я следовал руководству http://appfuse.org/display/APF/Using+Struts+2, чтобы создать простой сайт appfuse, но я получил ошибку при компиляции с Maven, который сообщает, что org.appfuse.webapp.action.BaseAction не существует.

Я много искал в гугле безуспешно, может кто-нибудь дать мне подсказку, благодарю за любую помощь, идею или совет. Thankyou

оба maven 2.2.1 и 3 выдавали одну и ту же ошибку: использование архетипа: appfuse-basic-struts-archetype, v.2.1.0-M1

команда maven:

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

на этом тесте на ПТ, МВН или пристани: во время войны не возникло ошибки.

однако, когда я добавляю 2 класса (PersonActionTest и PersonAction), как показано ниже, он не может скомпилировать

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

Сообщение об ошибке:

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

усечено, так как остальная часть сообщения похожа

спасибо ~

1038 * Steven *

Ответы [ 2 ]

2 голосов
/ 06 декабря 2012

Я знаю, что эта ветка довольно старая, но я уже несколько раз получал эту ошибку, поэтому хочу поделиться своим решением.Я недавно получил эту ошибку в следующих настройках.* Есть проект, скажем, Util, который импортирует библиотеку, например, dbcp. * Другой проект, скажем, App, зависит от Util, и аспекты должны быть применены к этому проекту.* Я добавил новый класс в App, который использует переходную зависимость, например, новый класс C реализует некоторый абстрактный класс из dbcp.Поскольку приложение зависит от Util, dbcp виден в затмении, и все в порядке.Тем не менее, когда я компилирую свой проект из командной строки с помощью mvn install, плагин aspectj не удается с заявлением, что импорт из dbcp не может быть разрешен.* Включение прямой зависимости от App для dbcp решает проблему (для меня).

Таким образом, aspectj не использует транзитивные зависимости, в то время как плагин компилятора java использует.Возможно, позиция нового класса C не является «оптимальной», ее следует перенести в проект Util, но это уже другая проблема.

Надеюсь, что это поможет любому, кто придет в эту ветку.

0 голосов
/ 22 октября 2010

Я не эксперт по Appfuse (под этим я подразумеваю, что я не знаю всех деталей изменений и существующих проблем), но проект, созданный с использованием версии 2.1.0-M1 архетипа, пропускает appfuse-struts артефакт (который обеспечивает o.a.w.a.BaseAction).

Я попытался добавить его вручную, но затем столкнулся с какой-то другой проблемой разрешения артефактов (не найдена транзитивная зависимость) и просто сдался.

Однако проект, который вы получите, используя предыдущая версия архетипа (т.е. версия 2.0.2) выглядит нормально, и я рекомендую использовать эту версию вместо:

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