gwt-guice注入远程servlet.找不到错误404



我想在远程servlet中使用Guice,但遇到了这个烦人的错误。

在运行我的项目之前,已经出现了一个错误。

警告:启动处理程序时出错java.lang.NoSuchMethodError.com.google.inject.Scopes.isSingleton(Lcom/google/inject/Binding;)Z网址:com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:103)网址:com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82)网址:com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPiperine.java:102)网址:com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172)网址:org.mortbay.jetty.servlet.FilterHolder.doStart(FilterHolder.java:97)网址:org.mortbay.component.AbstractLifeCycle.start(AbstractLife Cycle.java:50)网址:org.mortbay.japty.servlet.ServletHandler.initialize(ServletHandler.java:662)网址:org.mortbay.jetty.servlet.Context.startContext(Context.java:140)网址:org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)网址:org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)网址:org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)网址:org.mortbay.component.AbstractLifeCycle.start(AbstractLife Cycle.java:50)网址:org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)网址:org.mortbay.component.AbstractLifeCycle.start(AbstractLife Cycle.java:50)网址:org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)网址:org.mortbay.jetty.Server.doStart(Server.java:224)网址:org.mortbay.component.AbstractLifeCycle.start(AbstractLife Cycle.java:50)网址:com.google.aappengine.tools.development.JettyContainerService.startContainer(JettyContainerServices.java:191)网址:com.google.aappengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:239)网址:com.google.aappengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:146)网址:com.google.aappengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:97)网址:com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509)网址:com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068)网址:com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811)网址:com.google.gwt.dev.DevMode.main(DevMode.java:311)

运行项目后。

404

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 NOT_FOUND</title>
</head>
<body>
<h2>HTTP ERROR: 404</h2>
<p>Problem accessing /mercado/login. Reason:
<pre>    NOT_FOUND</pre></p>
<hr /><i><small>Powered by Jetty://</small></i>

这是我的密码。

<listener>
    <listener-class>ph.com.mercado.server.ioc.GuiceServletListener</listener-class>
</listener>
<filter>
    <filter-name>guiceFilter</filter-name>
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>guiceFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

public class GuiceServiceModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(LoginServiceImpl.class).in(Singleton.class);

public class GuiceServletListener extends GuiceServletContextListener{
    @Override
    public Injector getInjector() {
        return Guice.createInjector(new GuiceServletModule(), new GuiceServiceModule());
    }
public class GuiceServletModule extends ServletModule  {
    @Override
    protected void configureServlets() {
        serve("/mercado/login").with(LoginServiceImpl.class);
@RemoteServiceRelativePath("login")
public interface LoginService extends RemoteService {
    public LoginInfo loginGoggle(String requestUri);

public class LoginServiceImpl extends RemoteServiceServlet implements
        LoginService {
    @Inject
    private UserDao userDao;
    @Override
    public LoginInfo loginGoggle(String requestUri) {}
}

问题出在哪里?非常感谢。

请参阅Scopes.java

方法isSingleton已添加到2.1(当前为3.0)。请检查您的安装(可能使用的是guide 2.0)

相关内容

最新更新