繁体   English   中英

找不到Spring Application上下文

[英]Spring Application context not found

我在阅读应用程序的应用程序上下文时遇到问题。 我正在和Vaadin做实验。 我的配置类以我之前在其他项目中使用过的方式进行注释,并且始终可以使用以下方式进行注释:

@ImportResource("classpath:applicationContext.xml")

这么奇怪的是,无论我做什么,甚至用它来明确地找到文件,例如:

@ImportResource("/tmp/classpath:applicationContext.xml")

它仍然无法正常工作! 我现在正在使用Spring 3(由于历史原因......)

2016/05/17 13:39 ContextLoader.initWebApplicationContext:319 - org.springframework.asm.ClassReader。(未知来源)org.springframework.asm.ClassReader。(未知来源)org上的上下文初始化失败java.lang.IllegalArgumentException。 .springframework.asm.ClassReader。(未知来源)org.springframework.core.type.classreading.SimpleMetadataReader。(SimpleMetadataReader.java:52)org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java: 80)org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102)org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)at org.springframework.context org.springframework.context.annotation.ConfigurationClassPostProcessor.processCon中的.annotation.ConfigurationClassUtils.checkConfigurationClassCandidate(ConfigurationClassUtils.java:70) org.springframework上的org.springframework.context.ArinitionRegistry(ConfigurationClassPostProcessor,我发布在org.spring框架中的org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)的org.springframework.context.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)中的figBeanDefinitions(ConfigurationClassPostProcessor.java:253)位于org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java)的org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)中的.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461) :294)在org.eclipse.jetty的org.eclipse.jetty.wec.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:782)。 org.eclipse.je上的servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:424) 位于org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext。)的org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:249)中的tty.server.handler.ContextHandler.startContext(ContextHandler.java:774)。 java:1242)atg.eclipse.jetty.server.hand.ContextHandler.doStart(ContextHandler.java:717)atg.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)atg.mortbay.jetty .plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:298)位于org.eclipse.jetty.start(AbstractLifeCycle.java:64)org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection)的org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) .java:229)org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:172)org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)at org。 org.eclipse.jetty.util.component.AbstractLifeCycl中的eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) e.start(AbstractLifeCycle.java:64)位于org.eclipse.jetty.server.doStart(Server.java:282)的org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) org.mortbay.jetty.plugin.JettyServer.doStart(JettyServer.java:65)org.mortbay.jet.plugin.AbstractJettyMojo的org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) .startJetty(AbstractJettyMojo.java:520)org.mortbay.jetty.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:365)org.mortbay.jetty.plugin.JettyRunMojo.execute(JettyRunMojo.java:523)at org。位于org.apache.maven.maven.life.internal.MojoExecutor的org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)中的apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)。执行(MojoExecutor.java:153)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(Li fecycleModuleBuilder.java:116)org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java: 51)在org.apache.maache.maven.maven.DefaultMaven.doExecute的org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) (DefaultMaven.java:193)org.apache.maven.maven.DefaultMaven.execute(DefaultMaven.java:106)位于org.apache.maven的org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)。 cli.MavenCli.doMain(MavenCli.java:288)atg.apache.maven.cli.MavenCli.main(MavenCli.java:199)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl。在java.lang.reflect.Method.invoke(Method.jav)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)调用(NativeMethodAccessorImpl.java:62) a:498)org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)at org.codehaus .plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

经过大量的研究,我们终于找到了正在发生的事情。 这个非常棘手,但它有道理:

Java 1.8 ASM ClassReader无法解析类文件 - 可能是由于尚未支持的新Java类文件版本

本质上,新的ASM不像以前那样读取类,而Spring 3正在使用旧的ASM兼容性读取它们。 这导致我只有在更改为Spring 4时才能在Java 8中运行应用程序.Spring确保Spring 4与Java 6之后的任何旧Java版本之间的兼容性:

https://spring.io/blog/2015/04/03/how-spring-achieves-compatibility-with-java-6-7-and-8

oposite不正确,这意味着我无法使用Java 8运行Spring 3,因此我们现在有一个很好的迁移工作:)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM