2014-02-18 41 views
13
org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException 
    at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(ClassFileReader.java:372) 
    at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:232) 
    at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:188) 
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:113) 
    at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:49) 
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(BinaryTypeBinding.java:122) 
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromTypeSignature(LookupEnvironment.java:1335) 
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromVariantTypeSignature(LookupEnvironment.java:1391) 
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeArgumentsFromSignature(LookupEnvironment.java:1172) 
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromTypeSignature(LookupEnvironment.java:1340) 
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createMethod(BinaryTypeBinding.java:550) 
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createMethods(BinaryTypeBinding.java:630) 
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.cachePartsFrom(BinaryTypeBinding.java:365) 
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createBinaryTypeFrom(LookupEnvironment.java:688) 
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createBinaryTypeFrom(LookupEnvironment.java:667) 
    at org.eclipse.jdt.internal.compiler.Compiler.accept(Compiler.java:296) 
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:118) 
    at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:49) 
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(BinaryTypeBinding.java:122) 
    at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:168) 
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getPackage(Scope.java:2379) 
    at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.internalResolveLeafType(ParameterizedQualifiedTypeReference.java:138) 
    at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.internalResolveType(ParameterizedQualifiedTypeReference.java:132) 
    at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.resolveType(ParameterizedQualifiedTypeReference.java:351) 
    at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.resolveTypeFor(SourceTypeBinding.java:1374) 
    at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.fields(SourceTypeBinding.java:699) 
    at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.faultInTypesForFieldsAndMethods(SourceTypeBinding.java:677) 
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:469) 
    at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:756) 
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:468) 
    at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:459) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

我使用的Apache Tomcat/7.0.33,Eclipse的JEE-開普勒-SR1-RC3-win32的在我的項目中,我發現了這個異常org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException。如何解決它?

+1

看起來像一個tomcat問題。您使用的是tomcat版本,eclipse版本和jvm版本? – Leo

+0

Tomcat現在使用捆綁的Eclipse編譯器來編譯JSP - 它本身與正在使用的IDE無關。 我的問題是:您使用的是哪個版本的JDK? – Crollster

回答

1

刪除現有本地主機服務器,並添加新的服務器。這將解決您的問題。

1

由堆棧跟蹤信息去,似乎有一個編譯問題,內置的它使用而不是javac編譯日食。 Eclipse的所有Luna版本都支持jdk 8,但正如您所提到的,您正在使用Eclipse Kepler,您必須從eclipse社區自身下載功能補丁才能支持jdk 8.

同時您可以你使用jdk 7並重新編譯你的項目。看看錯誤是否消失。除此之外,代碼對我來說看起來很好。我希望它有幫助。樂於幫助。

2

如果你使用Maven和jdk8開始tomcat7,請確保tomcat7-maven-plugin的版本至少2.2

11

的問題與ECJ版本(ECJ-3.7.2.jar),你必須使用與jdk8兼容的更新版本的tomcat(apache-tomcat-7.0.68對我很好)

1

我在使用Tomcat 6和Java 8時遇到了同樣的問題。我通過配置Tomcat來使用Java 7來解決它8:在您的{tomcat-home}/bin/catalina.sh或您的自定義啓動腳本中添加導出JAVA_HOME=/usr/lib/jvm/java-7-oracle

0

注意 1.我們不能更新ECJ的包含在Tomcat 6版本,比如Tomcat 6,必須能夠在Java 1.5中運行,但當前ECJ版本需要Java 6

最低
  • 可以更換ECJ - *罐子用最新版本的,你可以從http://www.eclipse.org/
  • 見郵件列表Tomcat用戶的檔案下載,並請在郵件列表如果你有問題。 (Bugzilla不是支持論壇)。

  • Tomcat的可以被配置爲使用Java javac編譯代替的Eclipse
  • 0

    我還搜索許多文章我可以發現該溶液後面臨同樣的問題

    其您正在使用的Tomcat版本。

    其次,對Java 8,你必須使用一個版本的Eclipse ECJ編譯器支持Java 8

    的「ClassFormatException」可能意味着你的ECJ的版本並不知道有關Java 8的。

    變化JRE的新版本的舊版本,因爲它沒有這個版本的Tomcat

    0

    這個問題是由於導致兼容性問題JDK,Tomcat和Eclipse的支持。 爲了解決這個問題,使用jdk ver 1.8與apache tomcat 8.0和更新的Eclipse Mars 2.0。

    我有與Apache Tomcat 7.0相同的問題。

    重新配置所有,你的問題將得到解決。

    8

    非常感謝提示!在Tomcat 6.0.20和JDK1.8中出現相同的ClassFormatException錯誤。用ecj-4.2.2.jar取代jasper-jdt.jar,並重新編譯/運行所有JSP。

    +0

    這應該是評論 –

    +0

    解決了我的問題! – StationaryTraveller

    +0

    將這個jar ecj-4.2.2.jar文件添加到你的tomcat_install_folder/lib/ecj-4.2.2.jar中並停止tomcat服務器並刪除或重命名舊版本的ecj,如old_ecj-3.6.jar並啓動你的tomcat服務器它爲我工作,而不觸及jasper-jdt.jar bcz它不在我的lib文件夾中 –

    相關問題