【问题标题】:ModulesException: Unknown moduleModulesException:未知模块
【发布时间】:2016-07-18 14:43:22
【问题描述】:

我有一个使用 Java、App Engine、Gradle 和 Cloud Endpoints 编写的后端。我使用 App Engine Gradle 插件中的功能测试测试端点。这一切正常。

我遇到的问题是其中一个端点将任务发布到不存在的模块。至少在本地开发服务器上是这样。在生产中,该模块确实存在。如何告诉本地开发服务器该模块确实存在?

com.google.appengine.api.modules.ModulesException: Unknown module
        at com.google.appengine.api.modules.ModulesServiceImpl$ModulesServiceFutureWrapper.convertApplicationException(ModulesServiceImpl.java:365)
        at com.google.appengine.api.modules.ModulesServiceImpl$ModulesServiceFutureWrapper.convertException(ModulesServiceImpl.java:352)
        at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:97)
        at com.google.appengine.api.modules.ModulesServiceImpl.getAsyncResult(ModulesServiceImpl.java:104)
        at com.google.appengine.api.modules.ModulesServiceImpl.getVersionHostname(ModulesServiceImpl.java:321)
        at com.peerke.outdoorpuzzlegame.backend.common.tasks.NotifyBackendTask.notifyBackendClients(NotifyBackendTask.java:51)
        at com.peerke.outdoorpuzzlegame.backend.common.tasks.NotifyBackendTask.notifyUpdateHighScores(NotifyBackendTask.java:28)
        at com.peerke.outdoorpuzzlegame.backend.gameclientendpoint.endpoints.ActiveGamesEndpoint.createTeam(ActiveGamesEndpoint.java:81)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:130)
        at com.google.api.server.spi.SystemService.invokeServiceMethod(SystemService.java:363)
        at com.google.api.server.spi.SystemServiceServlet.execute(SystemServiceServlet.java:113)
        at com.google.api.server.spi.SystemServiceServlet.doPost(SystemServiceServlet.java:71)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
        at com.googlecode.objectify.ObjectifyFilter.doFilter(ObjectifyFilter.java:48)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.peerke.outdoorpuzzlegame.backend.common.gcp.GCPFilter.doFilter(GCPFilter.java:35)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:128)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)

我在出现异常的地方运行的代码:

ModulesServiceFactory.getModulesService().getVersionHostname(GAME_RUNNER_SERVICE, ModulesServiceFactory.getModulesService().getCurrentVersion()))

【问题讨论】:

    标签: java google-app-engine gradle google-cloud-endpoints


    【解决方案1】:

    我自己想通了。显然有一种方法可以使用本地开发服务器同时运行所有模块。然后它可以找出模块。

    如果其他人也想这样做,请创建 ear 模块并将 Gradle App Engine 插件应用到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      相关资源
      最近更新 更多