java.lang.ClassNotFoundException: ServiceLocator из BaseClassLoader - PullRequest
0 голосов
/ 18 января 2012

Я использую adromda 3.3 для генерации кода и maven 3.0.3 плюс jboss 6 в качестве сервера.Я получаю эту ошибку во время выполнения

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/email].[action]] Servlet.service() for servlet action threw exception: java.lang.ClassNotFoundException: org.andromda.email.ServiceLocator from BaseClassLoader@1f8f190{vfs:///D:/licenta/jboss6/server/default/deploy/
email-1.0-SNAPSHOT.ear/email-web-1.0-SNAPSHOT.war/}

    at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:480) [jboss-classloader.jar:2.2.1.GA]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) [:1.7.0]
    at org.email.web.user.UserAction.<clinit>(UserAction.java:25) [:]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [:1.7.0]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) [:1.7.0]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [:1.7.0]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) [:1.7.0]
    at java.lang.Class.newInstance0(Class.java:372) [:1.7.0]
    at java.lang.Class.newInstance(Class.java:325) [:1.7.0]
    at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:143) [:1.2.9]
    at org.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:292) [:1.2.9]
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:230) [:1.2.9]
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) [:1.2.9]
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) [:1.2.9]

из того, что я понимаю из ошибки, является то, что там локатор службы не определен в классе UserAction.Вот код:

import net.sf.json.JSONObject;
import org.andromda.email.ServiceLocator;
import org.andromda.email.service.user.UserService;
import org.andromda.email.vo.user.UserVO;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class UserAction {

public static UserService userService = ServiceLocator.instance().getUserService();

public ActionForward execute(ActionMapping mapping, ActionForm form,
                             HttpServletRequest request, HttpServletResponse response) throws Exception {

    String action = request.getParameter("action");
    JSONObject jsonObject = new JSONObject();

    try{
        if (action.equals("verifyUser")){
            request.setAttribute("jsonObject", verifyUser(request));
        } else if (action.equals("add")) {
            request.setAttribute("jsonObject",addUser(request));
        }


    }catch (Exception e) {
        e.printStackTrace();
        jsonObject.put("success", false);
        return mapping.getInputForward();
    }
    return mapping.getInputForward();
}

private JSONObject verifyUser(HttpServletRequest request) {

    JSONObject jsonObject = new JSONObject();
    UserVO user = new UserVO();
    user.setPassword(request.getParameter("username"));
    user.setUsername(request.getParameter("password"));
    if (userService.verifyUser(user)) {
        jsonObject.put("success", true);
    } else {
        jsonObject.put("success", false);
    }
    return  jsonObject;
}

private JSONObject addUser (HttpServletRequest request) {

    JSONObject jsonObject = new JSONObject();

    UserVO user = new UserVO();
    user.setPassword(request.getParameter("username"));
    user.setUsername(request.getParameter("password"));

    jsonObject.put("id",userService.addUser(user));
    jsonObject.put("success",true);

    return jsonObject;
}
}

Я думал, что не ставлю некоторую зависимость в maven, но этот сервисный локатор там по умолчанию.

Так что же мне делатьдля этого бежать?Как я могу импортировать эту библиотеку?

Спасибо, Раду

...