MyEclipse環境的項目改爲在Eclipse中運行爬坑記

 

新檢出一個web項目,同事都是運行在MyEclipse中的,我用Eclipse啓動,

 

1、首先是許多jar包報錯:

處理方法爲 remove掉,然後 選 WEB-INF 下的所有 jar 重新添加進去。

 

2、MyEclipse 中自帶 JavaEE5 library jar包合集,而Eclipse中沒有,項目中有用到,解決方法

從同事的 MyEclipse 安裝目錄下把  EE_5 目錄拷過來,主要是有下面這4個jar包:

然後,添加到項目中,可以建一個用戶目錄:

 

 

這樣就建好了,如圖:

但是這時,項目啓動,還是不會把這些jar引入到項目中,還需要如下配置:

添加完是如下效果:

 

這樣就把Javaee5的相關jar包徹底引入到項目中了。

 

3、啓動項目,報如下異常:

 

典型異常信息: URL [jar:file:/C:/Program%20Files%20(x86)/Java/jre6/lib/ext/jfxrt.jar!/com/sun/glass/ui/Accessible.class

 

全部異常信息如下:

複製代碼

嚴重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from relative location [applicationContext-service.xml]
Offending resource: class path resource [config/spring/applicationContext.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [jar:file:/C:/Program%20Files%20(x86)/Java/jre6/lib/ext/jfxrt.jar!/com/sun/glass/ui/Accessible.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 3805021
    at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
    at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:271)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:196)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:181)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:530)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:444)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [jar:file:/C:/Program%20Files%20(x86)/Java/jre6/lib/ext/jfxrt.jar!/com/sun/glass/ui/Accessible.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 3805021
    at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:261)
    at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)
    at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:84)
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1423)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1413)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:140)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:111)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:255)
    ... 29 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 3805021
    at org.springframework.asm.ClassReader.readInt(Unknown Source)
    at org.springframework.asm.ClassReader.accept(Unknown Source)
    at org.springframework.asm.ClassReader.accept(Unknown Source)
    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:59)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
    at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:237)
    ... 42 more
com.cthq.crm.webservice.task.BussinessTask@834e7
2019-08-12 15:45:26,084 INFO  [Timer-1] com.jtcrm.resource.framework.taskmanager.CacheFlushLoigc.processLogic(CacheFlushLoigc.java:28)  {} -   processLogic start!!!
2019-08-12 15:45:26,097 INFO  [Timer-1] com.jtcrm.resource.framework.taskmanager.CacheFlushLoigc.processLogic(CacheFlushLoigc.java:33)  {} -  0
2019-08-12 15:45:26,097 INFO  [Timer-1] com.jtcrm.resource.framework.taskmanager.CacheFlushLoigc.processLogic(CacheFlushLoigc.java:72)  {} -   processLogic end!!!
2019-8-12 15:45:26 org.apache.catalina.core.StandardContext startInternal
嚴重: Error listenerStart
2019-8-12 15:45:26 org.apache.catalina.core.StandardContext startInternal
嚴重: Context [/CRMResource] startup failed due to previous errors
2019-8-12 15:45:26 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
2019-8-12 15:45:26 org.apache.catalina.core.StandardContext listenerStop
嚴重: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
    at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172)
    at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1078)
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1052)
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1000)
    at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:548)
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5014)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5659)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

複製代碼

 

 不管是 使用 jdk 1.8,還是jdk 1.6 都是報上面的異常。

 最終參考下面的博文,

org.springframework.asm.ClassReader.(Unknown Source) 解決方案

此類問題一般在 spring版本 與 jdk版本不匹配的情況下會出現。

匹配規則:

spring3 + java7

spring4 + java8

解決方案:

 

1:檢查項目的jdk編譯版本 :右鍵項目,進入項目偏好設置,找到 java Compiler ,將jdk修改到你對應的spring版本

2:檢查tomcat的jre版本:以eclipse爲例:打開eclipse的偏好設置,搜索 server ,找到 Runtime Environments 找到你加載進來的tomcat 點擊edit,將jre修改爲對應你spring的版本。

到此問題應該就能得到解決。

 

 

發現本地項目用的Spring是3.1:

 

 將jdk改爲1.7後,故障排除【奇怪的是,同時用MyEclipse,用的其自帶1.6環境運行項目居然不報錯】。

 

 

Eclipse切換jdk的方法:

一、Eclipse中整體添加多個jdk

 

 

這裏只要選中一個包含 jdk 內容的目錄即可,這個目錄中的jdk不用真的安裝在電腦裏面,只要有這個文件夾就行了。

這樣一個新的 jdk環境就添加到Eclipse中了,一個Eclipse中可以添加多個JDK環境。

 

二、項目的JDK主要有兩個部分

1編譯環境:

項目右鍵

 

2、是運行項目的Tomcat的jdk環境:

 

分類: eclipse,新項目檢出問題,異常報錯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章