Jedis:Exception in thread "main" java.lang.VerifyError: Bad type on operand stack


Exception in thread "main" java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
com/test/tools/jedis/JedisTools.init()V @117: invokespecial
Reason:
Type 'redis/clients/jedis/JedisPoolConfig' (current frame, stack[2]) is not assignable to 'org/apache/commons/pool2/impl/GenericObjectPoolConfig'
Current Frame:
bci: @117
flags: { }
locals: { 'com/test/tools/jedis/JedisTools', 'redis/clients/jedis/JedisPoolConfig', 'java/lang/String' }
stack: { uninitialized 90, uninitialized 90, 'redis/clients/jedis/JedisPoolConfig', 'java/lang/String', integer, integer, 'java/lang/String' }
Bytecode:
0x0000000: bb00 2859 b700 2a4c 2b2a b400 1db6 002b
0x0000010: b600 312b 2ab4 001d b600 35b6 0038 2b2a
0x0000020: b400 1db6 003b 85b6 003f 2b2a b400 1db6
0x0000030: 0043 b600 462b 2ab4 001d b600 4ab6 004d
0x0000040: 2ab4 001d b600 504d 2cc6 000f 1254 2cb6
0x0000050: 0056 b600 5b99 0005 014d bb00 5f59 2b2a
0x0000060: b400 1db6 0061 2ab4 001d b600 642a b400
0x0000070: 1db6 0067 2cb7 006a b300 16b1
Stackmap Table:
append_frame(@88,Object[#40],Object[#87])
same_frame(@90)

at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getDeclaredConstructors(Class.java:2020)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:229)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:962)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:935)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:609)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
at com.test.dataprocess.Application.main(Application.java:44)

 

詭異的是,在MyEclipse里運行一定會出這個問題,但是項目打包成jar在外部運行是沒這個問題的。

 

當時找了很久的答案,包括國外的網站都去看過了,一般都是說spring、jedis、和commons-pool2的版本配合問題。

然而折騰了很久覺得還真不是,因為試了很多版本都不對。

然后怒而改代碼,發現無法拉起,於是考慮jar包的加載順序問題。

用的是Spring 3.1.4版本,Jedis 2.9版本, commons-pool2 2.6.0版本。

在Order and Export里,將Jedis和commons-pool2放在spring一系列的jar包之前,編譯,啟動,錯誤消失,問題解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM