java.lang.ClassFormatError:类文件中非本机或抽象的方法中缺少代码属性;“班级名称”;

java.lang.ClassFormatError:类文件中非本机或抽象的方法中缺少代码属性;“班级名称”;,java,netbeans-7,Java,Netbeans 7,我知道这个问题可能看起来很愚蠢,因为我不能给出很多关于它的信息,但我认为问题一定是某种bug 我已经编写了一个带有NetBeans 7.1的java程序,现在在尝试运行时会出现这个错误。10分钟前它运行得很好,我没有对错误所指的类进行任何更改 这可能是某种NetBeans错误吗?也许这是一个众所周知的问题 JDK对ClassFormatError说: 当Java虚拟机尝试读取类文件并 确定文件的格式不正确或无法删除 解释为类文件 可能类文件已损坏。我将做标准的IT支持声明。 你试过重新启动Net

我知道这个问题可能看起来很愚蠢,因为我不能给出很多关于它的信息,但我认为问题一定是某种bug

我已经编写了一个带有NetBeans 7.1的java程序,现在在尝试运行时会出现这个错误。10分钟前它运行得很好,我没有对错误所指的类进行任何更改


这可能是某种NetBeans错误吗?也许这是一个众所周知的问题

JDK对ClassFormatError说:

当Java虚拟机尝试读取类文件并 确定文件的格式不正确或无法删除 解释为类文件

可能类文件已损坏。我将做标准的IT支持声明。 你试过重新启动NetBeans吗


希望这对Netbeans 7.1有帮助。 在一个好几个月都运作良好的项目上工作。 现在我更改了一个bean,它通过javax.persistence持久化,现在抛出了这个异常。恢复了我的一些更改,清理并编译了项目,重新启动了整个系统:仍然是异常。 奇怪的是:在另一台机器上的Tomcat中,生成的.war可以完美地工作


更新:

今天我又遇到了同样的问题,我想不起来怎么解决了,但我又找到了这篇文章

半小时后,我找到了解决方案:只需更改属性
serialVersionUID
的值,重新部署应用程序,然后可以将该值更改为其原始值,然后重新部署->工作。
看起来Tomcat在某种程度上掌握了这个类——删除工作目录并没有带来成功

我也得到了这个例外。我的解决办法是:

  • 编辑并保存提到的类(.java文件)
  • 清洁与建设项目
  • 部署到tomcat服务器

它在NB 7.2中也得到了这个例外

  • “清理生成”和重新启动NB无效
  • 用最新更新更新NB并执行“清理和构建”也不起作用
因此,我重命名了缓存目录:

c:\Users\userabcd\AppData\Local\NetBeans\Cache\7.2\index\

启动NB,等待它完成“背景扫描”,然后按下“调试项目”,瞧。缓存每隔一段时间就会损坏一次:-/

我刚刚在Netbeans 7.4测试版中遇到这种情况

我尝试过的事情:

  • 重新启动Netbeans
  • 清洁和建造
  • 关闭netbeans、重命名缓存目录、启动netbeans并等待扫描完成
对我有用的是:

  • 使源文件可写并保存无意义的更改(插入空格)
我不知道为什么其他任何步骤都没有修复错误。如果我在重命名缓存目录后进行了一次清理和构建,那么它可能会起作用


这是一个非常令人沮丧的情况——希望这能帮助某人(也许是未来的我?)。

编辑:在下面添加了解决方案B

解决方案A

  • 项目属性
  • 构建>>编译
  • 取消检查:保存时编译
  • 清洁和建设
  • 注释A

    • 如果未选中“保存时编译”,则此项目将不再存在此问题
    • 如果您享受“保存时编译”功能的好处,则可以在清理和生成后重新检查该选项,并继续正常处理项目
    • 保存时编译是为了节省时间,在保存对源代码的更改时,在后台不断地将.java文件重新编译为.class文件。这样,当您构建或运行项目时,大部分编译工作已经完成,允许您快速运行和测试代码,即使对于大型项目也是如此
    • NetBeans使用一些奇特的缓存和版本控制,以避免每次保存文件时都必须重新编译整个项目。这就是为什么这里列出的其他解决方案通常会起作用;当缓存和版本控制系统偶尔出现故障时(如上所述),它们是击败该系统的方法
    解决方案B

  • 创建空文件夹e。GC:\Temp\mine
  • 为NetBeans创建新的快捷方式 使用目标中的命令行参数:
    “C:\Program Files\NetBeans 8.2\bin\netbeans64.exe”--userdir“C:\Temp\mine”
  • 当发生编译错误时 (ClassNotFoundException、MethodNotFoundException等) 删除
    C:\Temp\mine\var\cache
  • 注释B

    • 第一次将丢失所有NetBeans设置
    • 更容易解决缓存错误导致的未来编译错误
    • 允许运行多个NetBeans副本,每个userdir一个

    重新启动netbeans没有帮助=(如何重新创建已损坏的类文件?我已找到该类文件的备份,并将其替换,现在所有操作都正常=)缓存可以位于其他位置;看到了吧!正如其他答案所指出的,显然存在一些腐败。我很高兴我没有去做白费力气的事。