javax.el.E​​xpressionFactory在Google App Engine Standard上运行Spring Boot Application时出错

时间:2017-07-02 16:19:51

标签: java spring maven google-app-engine spring-boot

我正在尝试在Google App Engine上部署我的Spring Boot应用程序,但是在尝试调用与该应用程序关联的任何API时,我收到以下错误日志。

  

无法初始化' javax.el.E​​xpressionFactory'。检查一下   对类路径的EL依赖关系,或使用   相反,ParameterMessageInterpolator为   org.eclipse.jetty.annotations.ServletContainerInitializersStarter.doStart(ServletContainerInitializersStarter.java:68)     在   org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)     在   org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:330)     在   org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1406)     在   org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1368)     在   org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:778)     在   org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:262)     在   org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:522)     在   org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)     在   com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:244)     在   com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:182)     在   com.google.apphosting.runtime.jetty9.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:97)     在   com.google.apphosting.runtime.JavaRuntime $ RequestRunnable.dispatchServletRequest(JavaRuntime.java:657)     在   com.google.apphosting.runtime.JavaRuntime $ RequestRunnable.dispatchRequest(JavaRuntime.java:619)     在   com.google.apphosting.runtime.JavaRuntime $ RequestRunnable.run(JavaRuntime.java:589)     在   com.google.apphosting.runtime.JavaRuntime $ NullSandboxRequestRunnable.run(JavaRuntime.java:783)     在   com.google.apphosting.runtime.ThreadGroupPool $ PoolEntry.run(ThreadGroupPool.java:263)     在java.lang.Thread.run(Thread.java:745)引起:   org.springframework.beans.factory.UnsatisfiedDependencyException:   使用名称创建bean时出错   ' org.springframework.scheduling.annotation.ProxyAsyncConfiguration&#39 ;:   通过方法' setConfigurers'表达不满意的依赖性。   参数0;嵌套异常是   org.springframework.beans.factory.UnsatisfiedDependencyException:   使用名称' asyncConfiguration'

创建bean时出错

但是,只有在Google App Engine上运行我的应用时才会出现此错误。如果我在本地打包并运行它,应用程序将按预期工作。

任何可能导致此问题的想法?谢谢你!

2 个答案:

答案 0 :(得分:3)

确保您拥有el依赖项;

    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.el</artifactId>
        <version>3.0.1-b08</version>
    </dependency>

还要在appengine-web.xml中添加env-variables条目;

    <env-variables>
        <env-var name="javax.el.ExpressionFactory" value="com.sun.el.ExpressionFactoryImpl" />
    </env-variables>

并添加文件'META-INF / services / javax.el.E​​xpressionFactory' 内容:

    com.sun.el.ExpressionFactoryImpl

答案 1 :(得分:1)

Krullert's answer的帮助下,我设法为app引擎上的java 8应用程序解决了同样的问题。我按照Krullert's answer的步骤进行操作 我唯一需要做的就是添加&#39; WEB-INF / classes / META-INF / services / javax.el.E​​xpressionFactory&#39;文件。

一句话:能够使用&#39; org.glassfish:javax.el:3.0.1-b08&#39;你需要使用servlet api 3.1版(&#39; javax.servlet:javax.servlet-api:3.1.0&#39;)。 App引擎标准现在支持java 8才能使用它!