【发布时间】:2019-11-27 11:28:54
【问题描述】:
我无法在 glassfish 4.1.2 上部署我的 Spring Boot 应用程序的 WAR。部署 ApplicationcontextException 时抛出,并且在 web 上找不到任何有效的解释。
[2019-11-27T14:02:57.302+0300] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=98 _ThreadName=Thread-8] [timeMillis: 1574852577302] [levelValue: 800] [[ 2019-11-27 14:02:57.302 INFO 592 --- [min-listener(7)] ConditionEvaluationReportLoggingListener :
启动 ApplicationContext 时出错。显示条件报告 在启用“调试”的情况下重新运行您的应用程序。]]
[2019-11-27T14:02:57.457+0300] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=98 _ThreadName=Thread-8] [timeMillis: 1574852577457] [levelValue: 800] [[ 2019-11-27 14:02:57.456 错误 592 --- [min-listener(7)] os.boot.SpringApplication : 应用程序运行失败
org.springframework.context.ApplicationContextException:无法 启动网络服务器;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义的名称为“formContentFilter”的bean 资源 [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.boot.web.servlet.filter.OrderedFormContentFilter]: 工厂方法“formContentFilter”抛出异常;嵌套异常 是 java.lang.VerifyError: 不能从最终类继承 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:156) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544) ~[spring-context-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:152) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:132) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:92) [spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172) [spring-web-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.apache.catalina.core.StandardContext.callServletContainerInitializers(StandardContext.java:6062) [web-core.jar:na] 在 com.sun.enterprise.web.WebModule.callServletContainerInitializers(WebModule.java:774) [web-glue.jar:na] 在 org.apache.catalina.core.StandardContext.start(StandardContext.java:5960) [web-core.jar:na] 在 com.sun.enterprise.web.WebModule.start(WebModule.java:691) [web-glue.jar:na] 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041) [web-core.jar:na] 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024) [web-core.jar:na] 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747) [web-core.jar:na] 在 com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2286) [web-glue.jar:na] 在 com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1932) [web-glue.jar:na] 在 com.sun.enterprise.web.WebApplication.start(WebApplication.java:139) [web-glue.jar:na] 在 org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) [internal-api.jar:na] 在 org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) [internal-api.jar:na] 在 org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352) [internal-api.jar:na] 在 com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:500) [kernel.jar:na] 在 com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) [kernel.jar:na] 在 org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) [部署-admin.jar:na] 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539) [kernel.jar:na] 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535) [kernel.jar:na] 在 java.security.AccessController.doPrivileged(Native 方法)[na:1.8.0_231] 在 javax.security.auth.Subject.doAs(Subject.java:360) [na:1.8.0_231] 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534) [kernel.jar:na] 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565) [kernel.jar:na] 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557) [kernel.jar:na] 在 java.security.AccessController.doPrivileged(Native 方法)[na:1.8.0_231] 在 javax.security.auth.Subject.doAs(Subject.java:360) [na:1.8.0_231] 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556) [kernel.jar:na] 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464) [kernel.jar:na] 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109) [kernel.jar:na] 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846) [kernel.jar:na] 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722) [kernel.jar:na] 在 org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:253) [rest-service.jar:na] 在 org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:231) [rest-service.jar:na] 在 org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:275) [rest-service.jar:na] 在 org.glassfish.admin.rest.resources.TemplateListOfResource.createResource(TemplateListOfResource.java:133) [rest-service.jar:na] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) ~[na:1.8.0_231] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_231] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_231] 在 java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_231] 在 org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) [jersey-server.jar:na] 在 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) [jersey-server.jar:na] 在 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) [jersey-server.jar:na] 在 org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) [jersey-server.jar:na] 在 org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) [jersey-server.jar:na] 在 org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) [jersey-server.jar:na] 在 org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) [jersey-server.jar:na] 在 org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) [jersey-server.jar:na] 在 org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:309) [jersey-server.jar:na] 在 org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) [jersey-common.jar:na] 在 org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) [jersey-common.jar:na] 在 org.glassfish.jersey.internal.Errors.process(Errors.java:315) [jersey-common.jar:na] 在 org.glassfish.jersey.internal.Errors.process(Errors.java:297) [jersey-common.jar:na] 在 org.glassfish.jersey.internal.Errors.process(Errors.java:267) [jersey-common.jar:na] 在 org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) [jersey-common.jar:na] 在 org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:292) [jersey-server.jar:na] 在 org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1139) [jersey-server.jar:na] 在 org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:375) [jersey-container-grizzly2-http.jar:na] 在 org.glassfish.admin.rest.adapter.RestAdapter$2.service(RestAdapter.java:316) [rest-service.jar:na] 在 org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:179) [rest-service.jar:na] 在 com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) [kernel.jar:na] 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) [kernel.jar:na] 在 org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) [nucleus-grizzly-all.jar:na] 在 org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) [nucleus-grizzly-all.jar:na] 在 java.lang.Thread.run(Thread.java:748) [na:1.8.0_231] 由以下原因引起: org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义的名称为“formContentFilter”的bean 资源 [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.boot.web.servlet.filter.OrderedFormContentFilter]: 工厂方法“formContentFilter”抛出异常;嵌套异常 是 java.lang.VerifyError: 不能从最终类继承 org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:645) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:475) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:211) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAsRegistrationBean(ServletContextInitializerBeans.java:174) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAsRegistrationBean(ServletContextInitializerBeans.java:169) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.ServletContextInitializerBeans.addAdaptableBeans(ServletContextInitializerBeans.java:154) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.ServletContextInitializerBeans.(ServletContextInitializerBeans.java:86) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:253) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:227) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:184) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:153) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] ... 86个常用框架 省略原因: org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.boot.web.servlet.filter.OrderedFormContentFilter]: 工厂方法“formContentFilter”抛出异常;嵌套异常 是 java.lang.VerifyError: 不能从最终类继承 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:640) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] ... 104个常用框架 省略引起:java.lang.VerifyError:不能从final继承 java.lang.ClassLoader.defineClass1 中的类(本机方法) ~[na:1.8.0_231] 在 java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[na:1.8.0_231] 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_231] 在 org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:1220) ~[war-util.jar:na] 在 org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1750) ~[war-util.jar:na] 在 org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633) ~[war-util.jar:na] 在 com.fasterxml.jackson.datatype.jdk8.Jdk8Module.setupModule(Jdk8Module.java:30) ~[jackson-datatype-jdk8-2.10.0.jar:2.10.0] 在 com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:651) ~[jackson-databind.jar:2.5.1] 在 com.fasterxml.jackson.databind.ObjectMapper.registerModules(ObjectMapper.java:839) ~[jackson-databind.jar:2.5.1] 在 org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.configure(Jackson2ObjectMapperBuilder.java:665) ~[spring-web-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.build(Jackson2ObjectMapperBuilder.java:633) ~[spring-web-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.(MappingJackson2HttpMessageConverter.java:59) ~[spring-web-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter.(AllEncompassingFormHttpMessageConverter.java:76) ~[spring-web-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.web.filter.FormContentFilter.(FormContentFilter.java:61) ~[spring-web-5.2.1.RELEASE.jar:5.2.1.RELEASE] 在 org.springframework.boot.web.servlet.filter.OrderedFormContentFilter.(OrderedFormContentFilter.java:29) ~[spring-boot-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration.formContentFilter(WebMvcAutoConfiguration.java:161) ~[spring-boot-autoconfigure-2.2.1.RELEASE.jar:2.2.1.RELEASE] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) ~[na:1.8.0_231] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_231] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_231] 在 java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_231] 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE] ... 105个常用框架 省略]]
我在春天完全是新手,这就是为什么错误可能无处不在。
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Configuration
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(applicationClass, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return super.configure(application);
}
private static Class<Application> applicationClass = Application.class;
}
@RestController
class GreetingController {
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
...
}
}
【问题讨论】:
-
关于名为
formContentFilter的 bean 的错误消息应该伴随着异常堆栈跟踪,显示问题发生的位置。你能把它添加到你的问题中吗? -
@AndyWilkinson 无法粘贴完整的痕迹,这个版本可以吗?
标签: java spring spring-boot