java.lang.ClassFormatError:在类文件“类的名称”中不是本机或抽象的方法中的Absent Code属性

时间:2012-05-25 15:29:33

标签: java netbeans-7

我知道这个问题可能看起来很愚蠢,因为我不能提供很多关于它的信息,但我认为问题必须是某种错误......

我已经编写了一个带有NetBeans 7.1的java程序,现在尝试运行时会出现此错误。 10分钟之前它完全正常运行,我没有改变任何错误引用的类

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

6 个答案:

答案 0 :(得分:5)

它在NB 7.2中也有这个例外

  • '清理构建'并重新启动NB无法正常工作
  • 使用最新更新更新NB并执行'clean and build'也无效。

所以我重命名了缓存目录:

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

开始NB,等待它完成'后台扫描'并按下'调试项目'并瞧。缓存每隔一段时间就会被破坏: - /

答案 1 :(得分:2)

我也得到了这个例外。我的解决方案是:

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

答案 2 :(得分:2)

我刚刚用Netbeans 7.4 Beta发生了这件事。

我尝试的事情:

  • 重新启动Netbeans。
  • 清洁和建造。
  • 关闭netbeans,重命名缓存目录,启动netbeans并等待扫描完成。

对我有用的是什么:

  • 使源文件可写并保存无意义的更改(插入空格)。

我不知道为什么其他任何步骤都没有修复错误。也许如果我在重命名缓存目录后做了一个干净的构建,它会有用吗?

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

答案 3 :(得分:2)

<强>解决方案

  1. 项目属性
  2. 构建&gt;&gt;编译
  3. 取消选中:在保存时编译
  4. 清理并构建
  5. 备注

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

答案 4 :(得分:0)

JDK对ClassFormatError说:

  

当Java虚拟机尝试读取类文件时抛出   确定文件格式错误或不可用   解释为类文件。

类文件可能已损坏。我打算做标准的IT支持声明。 您是否尝试重新启动NetBeans?

希望有所帮助

答案 5 :(得分:0)

使用Netbeans 7.1做同样的事情。 在一个可以正常工作几个月的项目上工作。 现在我改变了一个用javax.persistence持久化的bean,现在抛出了这个异常。恢复了我的一些更改,清理并编译项目,重启整个系统:仍然例外。 关于它的奇怪之处:生成的.war在另一台机器上的Tomcat中完美运行。


更新

今天我又遇到了同样的问题,我不记得如何解决它,但我又找到了这篇文章。 ;)

半小时后我找到了解决方案:只需更改属性serialVersionUID的值,重新部署应用程序,然后您可以将值更改为其原始值并再次重新部署 - &gt;工作。 好像Tomcat正在深藏这个类 - 删除工作目录并没有带来成功。