MyEclipse、Eclipse、jdk、tomcat、jar檔案對應版本問題
階段一:情況專案在Myeclipse 2017 CI沒辦法正常編譯,因此更換了工具:
Eclipse版本資訊Mars.2 Release (4.5.2)
問題tomcat 7執行正常,8報錯如下:
總結:電腦上安裝了Tomcat 7、8、9和jdk 7、8和MyEclipse 2017 CI、Eclipse 4.5.2,來回的變換JAVA_HOME和CATALINA_HOME及工具啟動和Tomcat自啟動,而jar包版本是用maven管理的,是否存在版本對應的問題?四月 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)
階段二:情況專案在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,就先告一段落吧!