1. 程式人生 > >MyEclipse、Eclipse、jdk、tomcat、jar檔案對應版本問題

MyEclipse、Eclipse、jdk、tomcat、jar檔案對應版本問題

階段一:情況專案在Myeclipse 2017 CI沒辦法正常編譯,因此更換了工具:

Eclipse版本資訊Mars.2 Release (4.5.2)


問題tomcat 7執行正常,8報錯如下:

四月 12, 2017 6:06:20 下午 org.apache.catalina.startup.ContextConfig processAnnotationsJar
嚴重: Unable to process Jar entry [org/apache/ibatis/javassist/tools/web/ServiceThread.class] from Jar 
[jar:file:/E:/server/apache-tomcat-8.0.9/webapps/parking-cms/WEB-INF/lib/mybatis-3.4.0.jar!/] for annotations
java.io.EOFException
	at java.io.DataInputStream.readUnsignedShort(Unknown Source)
	at org.apache.tomcat.util.bcel.classfile.Utility.swallowMethodParameters(Utility.java:188)
	at org.apache.tomcat.util.bcel.classfile.Attribute.readAttribute(Attribute.java:159)
	at org.apache.tomcat.util.bcel.classfile.FieldOrMethod.<init>(FieldOrMethod.java:76)
	at org.apache.tomcat.util.bcel.classfile.ClassParser.readMethods(ClassParser.java:226)
	at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:101)
	at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1987)
	at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1940)
	at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1915)
	at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1876)
	at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1145)
	at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:767)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:302)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5083)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:581)
	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1686)
	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
總結:電腦上安裝了Tomcat 7、8、9和jdk 7、8和MyEclipse 2017 CI、Eclipse 4.5.2,來回的變換JAVA_HOME和CATALINA_HOME及工具啟動和Tomcat自啟動,而jar包版本是用maven管理的,是否存在版本對應的問題?

階段二:情況專案在Myeclipse 2017 CI仍然沒辦法正常編譯,因此更換了工具:

MyEclipse 2016可以正常執行編譯、其他的2017 CI也可以執行編譯!

這個過程有一個異常報錯(其他):

org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/parking-cms]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:672)
	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1861)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	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)
Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/parking-cms] due to a StackOverflowError.
 Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies. The class hierarchy being processed was
 [org.bouncycastle.asn1.ASN1EncodableVector->org.bouncycastle.asn1.DEREncodableVector->org.bouncycastle.asn1.ASN1EncodableVector]
	at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2126)
	at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2072)
	at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1947)
	at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1913)
	at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1898)
	at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1330)
	at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:889)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5380)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	... 10 more

四月 13, 2017 10:27:25 上午 org.apache.catalina.startup.HostConfig deployDescriptor
嚴重: Error deploying configuration descriptor C:\Users\Administrator\Workspaces\MyEclipse 2016\.metadata\.me_tcat7\conf\Catalina\localhost\parking-cms.xml
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component 
[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/parking-cms]]
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:672)
	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1861)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	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)

總結:也是報哪個LifecycleException異常,Tomcat對應的jdk版本不對,導致的異常!

階段三:情況專案在Myeclipse 2017 CI沒辦法正常編譯的情況 描述:

現象一:
初期如圖:properties、spring、xml 資料夾,裡面都是xml檔案!


專案清理後【Project - Clean】,僅僅是這三個檔案的重新生成。

正常表現(MyEclipse 2016、Eclipse 4.5.2編譯過程)是三個檔案手動刪除後,專案重新整理時,這三個檔案重新生成,點選清理後如圖:


重新生成這四個資料夾,cn資料夾裡是java編譯後的class檔案。

現象二:


MyEclipse 2017 CI中把maven包刪除後的一瞬間,cn資料夾可以生成,重新匯入到專案中後又僅僅是那三個xml資料夾的清理生成了。

現象三:


MyEclipse 2017 CI中,第一項總是不停重新整理,而正常的如下:


有點想確定這個是不是一個突破口!

延伸:

專案有紅叉號的不能正常編譯,且2017 CI中存在java程式碼報錯,但檔案不顯示錯誤的標誌!不報錯的可以正常編譯。可能真是2017 CI更新後出問題了。

總結:仍是搞不清楚,2017 CI是破解版,中途的一次升級後,註冊碼失效,之後重灌及反覆重灌,好像才出現這個問題的(僅限這一個專案),因此我覺得應該是專案出現問題,或者是jdk環境與jar包的問題,也可能破解版總會這樣犯神經,這個問題困擾了自己一天也只是有個模糊的認識重新下裝個2016,就先告一段落吧!