【问题标题】:How can I fix a java.lang.ClassFormatError: Truncated class file error?如何修复 java.lang.ClassFormatError: Truncated class file 错误?
【发布时间】:2016-09-10 00:51:18
【问题描述】:

我正在尝试在我的 Mac 上使用 Sublime Text 2,以便为我正在学习的课程编写代码。我想测试以确保我可以先使用基本程序执行此操作,但是当我尝试运行它时出现错误。我将构建系统设置为 JavaC,并且代码编译良好,只是当我尝试运行它时出现问题。这是我的步骤:

$ cd Documents/school/algorithms/assignments/
$ javac Hello.java
$ java Hello

Exception in thread "main" java.lang.ClassFormatError: Truncated class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

我试图研究这意味着什么,但我做不到。这是我的Hello.java代码

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

如果有人能帮助我解决这个问题,将不胜感激。如果您需要更多信息,请告诉我。

【问题讨论】:

  • 这意味着你的类文件已损坏。为什么?这不是 Java 问题。也许您的磁盘已满?尝试:删除Hello.class,再次编译,再次运行。首先检查您的磁盘是否已满。

标签: java macos sublimetext2


【解决方案1】:

我可以看到,您的“Hello.java”文件根本没有任何问题。 但是您收到java.lang.ClassFormatError: Truncated class file 的错误是由于您的类文件(字节码)存在问题。 其实ClassFormatError有两种类型:

  • 第一个是“不兼容的魔法值”,仅当您修改 .class 文件中的字节码(添加或删除某些内容)时才会出现
  • 您获得的第二个“截断的类文件”以及此错误背后的原因是 .class 文件不包含任何字节码。

所以我建议您检查您的.class 文件以确保它包含一些代码。如果没有,请将您的代码保存到另一个目录,然后编译并运行您的代码。

【讨论】:

    【解决方案2】:

    我刚刚在 Android Studio 4.1.1 中修复了同样的问题。错误是:

    > Task :my_module:kaptGenerateStubsDebugKotlin FAILED
    e: java.lang.ClassFormatError: Truncated class file
    

    重新启动 Android Studio,使缓存无效没有帮助。唯一对我有帮助的是升级 Kotlin 版本(我有 1.4.10)以匹配 Kotlin 插件版本(我有 1.4.20)。

    项目级build.gradle:

    buildscript {
        // I've upgraded Kotlin version to match the Kotlin plugin one.
        ext.kotlin_version = '1.4.20'
    
        repositories {
            google()
            jcenter()
        }
    
        dependencies {
            classpath 'com.android.tools.build:gradle:4.1.1'
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-27
      • 2021-01-25
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 2020-04-20
      相关资源
      最近更新 更多