尝试运行我的项目时抛出BeanCreationException

我正在尝试使用Spring开发RESTful Web服务,然后将其部署在Google App Engine上。 该服务的客户端将是一个Android应用程序。 我第一次使用spring和GAE,所以对我来说不太清楚。

我正在尝试按照本教程 。 当我尝试将我的项目作为Web应用程序项目运行时,我得到了例外情况: http : //pastebin.com/07cVSx2c – 这是整个输出。

以下是第一行:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.handler.MappedInterceptor#0': Cannot create inner bean '(inner bean)#57459491' of type [org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor] while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#57459491': Cannot resolve reference to bean 'org.springframework.format.support.FormattingConversionServiceFactoryBean#0' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.format.support.FormattingConversionServiceFactoryBean#0': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: java.time.format.FormatStyle is a restricted class. Please see the Google App Engine developer's guide for more details. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548) at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:255) at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:288) 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:258) at com.google.appengine.tools.development.DevAppServerImpl.access$000(DevAppServerImpl.java:47) at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:213) at com.google.appengine.tools.development.DevAppServerImpl$1.run(DevAppServerImpl.java:211) at java.security.AccessController.doPrivileged(Native Method) at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:211) at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:277) at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48) at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:219) at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:210) 

所以在这里我到现在为止: web.xml

    mvc-dispatcher  org.springframework.web.servlet.DispatcherServlet  1   mvc-dispatcher /   contextConfigLocation /WEB-INF/mvc-dispatcher-servlet.xml    org.springframework.web.context.ContextLoaderListener    index.html   

MVC-调度-servlet.xml中

          Hello World    

MarkerController.java

 package com.example.myserver; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/markers") public class MarkerController { private String markers; @RequestMapping(method = RequestMethod.GET) public String getMarkers() { return this.markers; } public void setMarkers(String markers) { this.markers = markers; } } 

你能告诉我这是什么问题吗?我该如何解决? 我试图搜索这个错误java.lang.NoClassDefFoundError: java.time.format.FormatStyle但我没有找到任何东西..在此先感谢!

首先,GAE 并不完全支持Java 8 。 其次,GAE限制了Java标准库中哪些类可以使用和不可以使用。 这里列出了允许的类。

通常,类是受限制的,因为它们访问GAE中不可用的资源(例如,写入文件系统)。 但是,我的猜测是FormatStyle只是受限制,因为它是Java 8类,而GAE还没有赶上Java 8。

您获得的NoClassDefFoundError只是尝试访问GAE不允许的类。 您可以选择自己重新创建课程,找到已经彻底重新创建课程的其他人,或者等待GAE最终添加对它的支持。