web-dev-qa-db-ja.com

私のプロジェクトでは、この例外org.Eclipse.jdt.internal.compiler.classfmt.ClassFormatExceptionが見つかりました。解決方法

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-kepler-SR1-RC3-win32を使用しています

22
user3264898

ヒントをありがとう! Tomcat 6.0.20およびJDK1.8で同じClassFormatExceptionエラーが発生しました。 jasper-jdt.jarをecj-4.2.2.jarに置き換え、すべてのJSPが再びコンパイル/動作します。

18
M Ali

この問題はecjバージョン(ecj-3.7.2.jar)に関連しているため、jdk8と互換性のある最新バージョンのTomcatを使用する必要があります(Apache-Tomcat-7.0.68は正常に機能します)

13
hasnae

次の手順で問題が解決することを願っています。

1)Tomcatを停止します。

2)このecj-4.2.2.jarをダウンロード link

3)Tomcatのlibフォルダーの下にecj-4.2.2.jarをコピーします(例-C:\ Apache-Tomcat-6.0.36\lib)。

4)ecj-3.7.2.jarの名前をold_ecj-3.7.2.jarに変更します。

5)Tomcatを起動します。

7
Jar Yit

Mavenとjdk8を使用してTomcat7を起動する場合は、Tomcat7-maven-pluginは少なくとも2.2

3
Peter Rader

既存のlocalhostサーバーを削除し、新しいサーバーを追加します。これで問題が解決します。

2
rajeesh

Java 8.でTomcat 6を使用して同じ問題が発生しました。8の代わりにJava 7:Add export Java_HOME=/usr/lib/jvm/Java-7-Oracleあなたの{Tomcat-home}/bin/catalina.shまたはカスタムスタートアップスクリプト。

1
mvdb

Tomcatバージョンを確認します。Tomcatバージョン7.0.29以前の場合は、古いTomcatを削除して最新のものをダウンロードします。そしてプロジェクトを実行します https://Tomcat.Apache.org/download-90.cgi

1
ganesh raut

Java 8を使用している場合は、Eclipseバージョンを更新する必要があります。

Eclipse doc

1
dtelaroli

スタックトレースの情報を見ると、組み込みのEclipseコンパイラにjavacではなく使用するコンパイルの問題があるようです。 EclipseのすべてのLunaビルドはjdk 8をサポートしていますが、Eclipse Keplerを使用していると述べたように、jdk 8をサポートするにはEclipseコミュニティ自体から機能パッチをダウンロードする必要があります。

その間、jdk 7を使用してプロジェクトを再コンパイルできます。エラーが消えるかどうかを確認します。それ以外の点では、コードは私には問題ありません。役に立てば幸いです。お力になれて、嬉しいです。

1
Priyanshu

私もこの解決策を見つけることができた多くの記事を検索した後、同じ問題に直面しました

使用しているTomcatのバージョン。

次に、Java 8の場合、Java 8をサポートするEclipse ECJコンパイラのバージョンを使用する必要があります。

「ClassFormatException」は、おそらくECJのバージョンがJava 8についてまったく知らないことを意味します。

このTomcatバージョンをサポートしていないため、jreの新しいバージョンを古いバージョンに変更します。

0
shashigura

Tomcat 6はJava 1.5で実行できる必要がありますが、現在のECJリリースでは最小Java 6。

  1. Ecj-*。jarを http://www.Eclipse.org/ からダウンロードできる新しいバージョンに置き換えることができます

Tomcat Usersメーリングリストのアーカイブを参照し、質問がある場合はメーリングリストで質問してください。 (Bugzillaはサポートフォーラムではありません)。

  1. Tomcatは、Eclipseの代わりにJava javacコンパイラーを使用するように構成できます
0
shashigura

この問題は、jdk、Tomcat、Eclipseとの互換性の問題が原因で発生します。この問題を解決するには、Apache Tomcat 8.0でjdk ver 1.8を使用し、Eclipse Mars 2.0を更新します。

Apache Tomcat 7.0でも同じ問題があります。

すべてを再構成すると、問題が解決します。

0
Suyash