java - 部署时使用 Guice InstantiationError 进行 RESTEasy(App Engine 本地)

标签 java google-app-engine guice resteasy

我正在尝试按照此处的说明让 Guice 与 RESTEasy 配合使用:https://docs.jboss.org/resteasy/docs/3.0.21.Final/userguide/html/Guice1.html

但是,在 App Engine 上部署期间(本地部署),org.jboss.resteasy.spi.ResteasyDeployment 上出现错误 InstantiationError:

2019-11-12 21:01:15.419:WARN:oejw.WebAppContext:main: Failed startup of context c.g.a.t.d.j.DevAppEngineWebAppContext@557a1e2d{APP,/,file:///PATH/target/APP-1.0-SNAPSHOT/,UNAVAILABLE}{PATH\target\APP-1.0-SNAPSHOT}
java.lang.InstantiationError: org.jboss.resteasy.spi.ResteasyDeployment
    at org.jboss.resteasy.plugins.server.servlet.ConfigurationBootstrap.<init>(ConfigurationBootstrap.java:21)
    at org.jboss.resteasy.plugins.server.servlet.ListenerBootstrap.<init>(ListenerBootstrap.java:25)
    at org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap.contextInitialized(ResteasyBootstrap.java:23)
    at org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener.contextInitialized(GuiceResteasyBootstrapServletContextListener.java:37)
    at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:957)
    at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:553)
    at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:922)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:365)
    at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1497)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1459)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:852)
    at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:278)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:545)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:167)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:167)
    at org.eclipse.jetty.server.Server.start(Server.java:418)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
    at org.eclipse.jetty.server.Server.doStart(Server.java:382)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at com.google.appengine.tools.development.jetty9.JettyContainerService.startContainer(JettyContainerService.java:343)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:283)
    at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
    at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:87)
    at com.google.appengine.tools.development.Modules.startup(Modules.java:105)
    at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:282)
    at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:47)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:223)
    at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:221)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:221)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:404)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:45)
    at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:257)
    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:248)

我撤销了更改,发现仅在 pom.xml 中添加以下依赖项就会导致部署错误。

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-guice</artifactId>
        <version>4.4.0.Final</version>
    </dependency>

如果我删除它,部署就没有错误。知道为什么会发生这种情况吗?其他 RESTEasy 和 Guice 相关的依赖项已声明:

    <!--RESTEasy Dependencies-->
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>3.9.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
        <version>3.9.0.Final</version>
    </dependency>

    <!-- Guice -->
    <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>4.2.2</version>
    </dependency>
    <dependency>
        <groupId>com.google.inject.extensions</groupId>
        <artifactId>guice-servlet</artifactId>
        <version>4.2.2</version>
    </dependency>

最佳答案

通过将 resteasy-guice 依赖项版本设置为 3.9.0.Final 也解决了错误

关于java - 部署时使用 Guice InstantiationError 进行 RESTEasy(App Engine 本地),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58826024/

相关文章:

java - Android:不确定为什么我的方法没有返回 ArrayList<HashMap<String, String>>

java - 扩展 "Dynamic Web Project"向导

java - 检查 jTable 数据中的重复行

java - 如何从 java.sql.SQLException : Concurrent Modification 重试/恢复

python - 更改实体的键名

java - Guice 导致抛出 UncaughtExceptionHandler

java - Guice MapBinder

java - 为什么 JSF 在请求更新 View 的一部分时会实例化页面上的所有 bean,而不是在页面的该部分中使用的 bean?

python - GAE 网络应用程序 : the cost of importing a bunch of request handlers

java - 使用 google guice 的 mvp 场景实际上涉及什么?