java - 运行简单的 Maven 项目后出现此错误

标签 java spring maven jsp

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)

最佳答案

我最近也遇到了这个问题。 根本原因是 jar 库包含两个具有不同签名(大小和创建日期)的相同类文件。类加载器遇到错误,因为它首先尝试根据较大的文件估计字节码长度,为其准备缓冲区,然后加载较小的文件,因此输出留下尾随零,这又导致了这个异常。 但这取决于类加载器。就我而言,代码在使用 java.lang 类加载器的情况下在本地运行良好。但当部署到 Jboss 时,它使用 JBoss 专有的 ModuleClassLoader 并遇到了问题。

因此,如果您确定 Java 编译版本匹配等,请检查相关 jar 库是否包含两个同名的类文件。

关于java - 运行简单的 Maven 项目后出现此错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46128069/

相关文章:

spring - 添加 expire 到 Spring Security remember me cookie

java - 在 spring mvc 中使用多个调度程序 servlet 的优点和缺点

java - 如何从根模块运行子模块中找到的应用程序?

java - 如何设置maven项目?

java - 在Spring JDBC中执行数据库 session 初始化SQL

java - 升级 Firebase 后 Android Unresolved 依赖关系

java - 在 java 中使用扫描仪类获取多行文本

java - jmap 支持 ascii 格式的堆转储和二进制转储格式

使用 SSH 并指定凭据时,Git 推送因公钥失败

包含空 Enum 的 Java 接口(interface)