我正在尝试在Google App Engine上部署我的Spring Boot应用程序,但是在尝试调用与该应用程序关联的任何API时,我收到以下错误日志。
无法初始化' javax.el.ExpressionFactory'。检查一下 对类路径的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上运行我的应用时才会出现此错误。如果我在本地打包并运行它,应用程序将按预期工作。
任何可能导致此问题的想法?谢谢你!
答案 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.ExpressionFactory' 内容:
com.sun.el.ExpressionFactoryImpl
答案 1 :(得分:1)
在Krullert's answer的帮助下,我设法为app引擎上的java 8应用程序解决了同样的问题。我按照Krullert's answer的步骤进行操作 我唯一需要做的就是添加&#39; WEB-INF / classes / META-INF / services / javax.el.ExpressionFactory&#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才能使用它!