Java 无法从Spring应用程序上下文创建ThreadPoolExecutor

Java 无法从Spring应用程序上下文创建ThreadPoolExecutor,java,spring-mvc,Java,Spring Mvc,在以下方式创建ThreadPoolExecutor时,我得到了IllegalArgumentException <bean id="processorQueue" class="java.util.concurrent.LinkedBlockingDeque"/> <bean id="processorThreadPool" class="java.util.concurrent.ThreadPoolExecutor"> <constructor-a

在以下方式创建ThreadPoolExecutor时,我得到了IllegalArgumentException

<bean id="processorQueue" class="java.util.concurrent.LinkedBlockingDeque"/>
<bean id="processorThreadPool" class="java.util.concurrent.ThreadPoolExecutor">
        <constructor-arg index="0" type="int" value="10"/>
        <constructor-arg index="1" type="int" value="20"/>
        <constructor-arg  type="long" value="1"/>
        <constructor-arg>
            <value type="java.util.concurrent.TimeUnit">MINUTES</value>
        </constructor-arg>
        <constructor-arg ref="processorQueue"/>
</bean>

会议记录
我做错了什么? (我正在使用Spring3.2和Java8)

这是堆栈跟踪

2015-08-10 14:20:14  DefaultListableBeanFactory doGetBean  [http-nio-8080-exec-37] DEBUG: Returning cached instance of singleton bean 'processorQueue'
2015-08-10 14:20:14  DispatcherServlet initServletBean  [http-nio-8080-exec-37] ERROR: Context initialization failed
java.lang.IllegalArgumentException
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.core.LocalVariableTableParameterNameDiscoverer.inspectClass(LocalVariableTableParameterNameDiscoverer.java:110)
    at org.springframework.core.LocalVariableTableParameterNameDiscoverer.getParameterNames(LocalVariableTableParameterNameDiscoverer.java:85)
    at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:193)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1051)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:955)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:490)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:599)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:518)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:459)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1241)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1154)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1575)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1533)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
2015-08-10 14:20:14 DefaultListableBeanFactoryDogetBean[http-nio-8080-exec-37]调试:返回singleton bean'processorQueue'的缓存实例
2015-08-10 14:20:14 DispatcherServlet initServletBean[http-nio-8080-exec-37]错误:上下文初始化失败
java.lang.IllegalArgumentException
位于org.springframework.asm.ClassReader。(未知来源)
位于org.springframework.asm.ClassReader。(未知来源)
位于org.springframework.asm.ClassReader。(未知来源)
位于org.springframework.core.LocalVariableTableParameterNameDiscoveryr.inspectClass(LocalVariableTableParameterNameDiscoveryr.java:110)
位于org.springframework.core.LocalVariableTableParameterNameDiscoveryr.getParameterNames(LocalVariableTableParameterNameDiscoveryr.java:85)
位于org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:193)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1051)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:955)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:490)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
位于org.springframework.beans.factory.support.DefaultListableBeanFactory.PreInstanceSingleton(DefaultListableBeanFactory.java:626)
位于org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
位于org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:651)
位于org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:599)
位于org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:665)
位于org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:518)
位于org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:459)
位于org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
位于javax.servlet.GenericServlet.init(GenericServlet.java:158)
位于org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1241)
位于org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1154)
位于org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)
位于org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:652)
位于org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
位于org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1575)
位于org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1533)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
运行(Thread.java:745)
我尝试为corePoolSize和maximumPoolSize传递相同的值,但结果相同。

从JavaDoc(1.8)中,我可以看到以下内容:

@throws IllegalArgumentException if one of the following holds:<br>
{@code corePoolSize < 0}<br>
{@code keepAliveTime < 0}<br>
{@code maximumPoolSize <= 0}<br>
{@code maximumPoolSize < corePoolSize}
@如果以下情况之一成立,则引发IllegalArgumentException:
{@code corePoolSize<0}
{@code keepAliveTime<0}

{@code maximumPoolSize您没有提到您的类路径设置,但是您似乎正在使用java 8和spring 3.2,spring 3.2不支持它。将spring升级到4.0

Dennis,请检查堆栈跟踪。我已经在java 8和spring Context 3.2.14.RELEASE中尝试了这一点。它仍在工作。如所述,我没有添加任何ASM依赖项很明显。除了上下文之外,你的类路径上还有其他spring依赖项吗?你使用的是最新的3.2.14版本吗?哦,我使用的是3.2.2.RELEASE。它与3.2.14.RELEASE完美配合。非常好的帮助,谢谢。你的代码在我的web应用程序中运行良好,我有