Подтвердить что ты не робот

В моем проекте я нашел это исключение 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

4b9b3361

Ответ 1

Проблема связана с версией ecj (ecj-3.7.2.jar), вам нужно использовать более новую версию tomcat, совместимую с jdk8 (apache-tomcat-7.0.68 отлично работает для меня)

Ответ 2

Большое спасибо за советы! Ran в ту же ошибку ClassFormatException для Tomcat 6.0.20 и JDK1.8. Заменил jasper-jdt.jar ecj-4.2.2.jar и все JSP файлы, компилирующие/работающие снова.

Ответ 3

Если вы используете maven и jdk8 для запуска tomcat7, убедитесь, что версия tomcat7-maven-plugin не менее 2.2

Ответ 4

Удалите существующие серверы localhost и добавьте новый сервер. Это решит вашу проблему.

Ответ 5

Если вы используете java 8, возможно, вам следует обновить версию вашего eclipse.

Eclipse doc

Ответ 6

Идя по информации в трассировке стека, кажется, что есть компиляция с встроенным компилятором eclipse, который он использует, а не javac. Все сборки Luna Eclipse поддерживают jdk 8, но, как вы уже упоминали, что вы используете Eclipse Kepler, вам нужно будет загрузить патч-функцию из сообщества eclipse, чтобы поддерживать jdk 8.

Между тем вы можете использовать jdk 7 и перекомпилировать свой проект. Проверьте, не исчезла ли ошибка. Кроме того, код выглядит хорошо для меня. Я надеюсь, что это помогает. Рад помочь.

Ответ 7

У меня была такая же проблема с Tomcat 6 с Java 8. Я решил это, настроив Tomcat на использование Java 7 вместо 8: Добавить export JAVA_HOME=/usr/lib/jvm/java-7-oracle в ваш {tomcat-home}/bin/catalina.sh или ваш собственный запуск script.

Ответ 8

Проверьте свою версию Tomcat. Если ваша версия tomcat 7.0.29 и ниже, то Удалите старый Tomcat и загрузите последнюю версию. И запустите проект https://tomcat.apache.org/download-90.cgi

Ответ 9

Обратите внимание, что 1. Мы не можем обновить версию ECJ, включенную в Tomcat 6, поскольку Tomcat 6 должен работать на Java 1.5, но для текущих выпусков ECJ требуется минимум Java 6.

  1. Вы можете заменить ecj - *. jar более поздней версией, которую вы можете загрузить с http://www.eclipse.org/

См. архив списка рассылки Tomcat Users и задайте в списке рассылки, если у вас есть вопросы. (Bugzilla не является форумом поддержки).

  1. Tomcat может быть настроен на использование компилятора Java javac вместо Eclipse

Ответ 10

i также столкнулся с такой же проблемой после поиска многих статей, я мог найти это решение

какую версию Tomcat вы используете.

Во-вторых, для Java 8 вы должны использовать версию Eclipse ECJ-компилятора, которая поддерживает Java 8.

"ClassFormatException", вероятно, означает, что ваша версия ECJ вообще не знает о Java 8.

измените новую версию jre на старую версию, потому что она не поддерживает эту версию tomcat

Ответ 11

Эта проблема вызвана проблемой совместимости с jdk, tomcat и Eclipse. Для решения этой проблемы используйте jdk ver 1.8 с apache tomcat 8.0 и обновленным Eclipse Mars 2.0.

У меня такая же проблема с Apache Tomcat 7.0.

Переконфигурируйте все, и ваша проблема будет решена.