spring2.0在JDK1.4下的運行問題

最近開發的一套應用程序在部署運行的時候總是出現如下的錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: org.springframework.core.CollectionFactory$JdkCollectionFactory
at java.lang.Class.initializeClass(libgcj.so.7rh)
at org.springframework.core.CollectionFactory.createLinkedSetIfPossible(CollectionFactory.java:91)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.<init>(DefaultSingletonBeanRegistry.java:85)
at org.springframework.beans.factory.support.AbstractBeanFactory.<init>(AbstractBeanFactory.java:142)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.<init>(AbstractAutowireCapableBeanFactory.java:135)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.<init>(AbstractAutowireCapableBeanFactory.java:146)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.<init>(DefaultListableBeanFactory.java:99)
at org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:144)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:99)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:389)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:324)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
Caused by: java.lang.ClassNotFoundException: [color=red]java.util.concurrent.ConcurrentHashMap not found[/color] in gnu.gcj.runtime.SystemClassLoader{urls=[...], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
at java.net.URLClassLoader.findClass(libgcj.so.7rh)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at java.lang.Class.forName(libgcj.so.7rh)
at java.lang.Class.initializeClass(libgcj.so.7rh)
...14 more

本來在測試服務器上運行的非常好,從來沒有出現過如此問題.而且什麼都配置好了,而且也裝好了,可就是運行不起來。後來,無意中敲了下java -version,發現默認是JDK是1.4的,然後再看紅色的部分就明白了.JDK5中才有線程池的引入,在1.4中是沒有的.雖然服務器上安裝了JDK5,但系統卻是使用默認自帶的JDK,所以就出現瞭如上的問題,然後用JDK5啓動後一切問題解決.

因此,我們在發現ClassNotFoundException的時候,不一定是classpath沒有設置或設置錯誤,關鍵是要看是出現什麼樣的問題.因爲我在網上一baidu,只要是這個錯誤的,回答幾乎無一例外,都是"你的classpath"沒有設置,可見這個回答也太偏頗了點!另外,雖然JDK6也已經出來了,但目前還是有不少的系統在使用JDK1.4,而且有些LINUX系統也自帶的版本比較低.所以,我們在進行這樣的系統部署時就要格外的注意了!
發佈了2 篇原創文章 · 獲贊 0 · 訪問量 3420
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章