2017-09-09 104 views
0
SEVERE: Compilation error 
org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException 
    at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(ClassFileReader.java:342) 
    at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:206) 
    at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:163) 
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:96) 
    at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:49) 
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(BinaryTypeBinding.java:97) 
    at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:167) 
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2187) 
    at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:974) 
    at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1164) 
    at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:366) 
    at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:623) 
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392) 
    at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:429) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Unknown Source) 
+1

どのバージョンのtomcat、java、eclipse、maven ....を使用していますか?コメントする前にこのガイド(https://stackoverflow.com/help/how-to-ask)をお読みください:)、ようこそSO – emotionlessbananas

答えて

0

私は最近この問題に遭遇しました。 根本原因は、jarライブラリに異なるシグネチャ(サイズと作成日)の2つの同一クラスファイルが含まれていることでした。クラスローダは、最初に大きなファイル、準備されたバッファに基づいてバイトコードの長さを推定しようとしたためエラーが発生し、小さなファイルをロードしたため、出力には後続のゼロが残っていました。しかし、これはクラスローダーに依存します。私の場合、コードはjava.langクラスローダーを使用してローカルで正常に実行されました。しかし、Jbossにデプロイされたとき、JBoss独自のModuleClassLoaderを使用して問題に遭遇しました。

Javaコンパイルのバージョンが一致していることが確かであれば、問題のjarライブラリに同じ名前の2つのクラスファイルが含まれているかどうかを確認してください。

0

ClassFormatExceptionは、あなたが使用するようにコードをコンパイルしたものを使用すると、よりJavaの新しいバージョン用に構築されたクラスを使用しようとしていることを示しています。たとえば、あなたはJava 5の(Mavenのデフォルト設定)用にコンパイルされているが、Java 8

用に構築されたクラスを使用しようとしているあなたが使用したいどのバージョンMavenを伝える方法についての指示のためのMaven Compiler Pluginを参照してください。

+0

私はJava 8とTomcat 8を使用しています –

関連する問題