4

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

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

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

4

6 回答 6

5

它在 NB 7.2 中也出现了这个异常

  • “清理构建”并重新启动 NB 不起作用
  • 使用最新更新更新 NB 并执行“清理和构建”也不起作用。

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

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

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

于 2013-05-06T08:47:53.510 回答
3

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

解决方案 A

  1. 项目属性
  2. 构建 >> 编译
  3. 取消选中:保存时编译
  4. 清理和构建

注释 A

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

解决方案 B

  1. 创建空文件夹,例如 C:\Temp\mine
  2. 在 Target 中使用命令行参数为 NetBeans 创建一个新快捷方式: "C:\Program Files\NetBeans 8.2\bin\netbeans64.exe" --userdir "C:\Temp\mine"
  3. 发生编译错误时(ClassNotFoundException、MethodNotFoundException 等...)删除C:\Temp\mine\var\cache

注释 B

  • 第一次您将丢失所有 NetBeans 设置。
  • 更容易解决由缓存错误引起的未来编译错误。
  • 允许运行多个 NetBeans 副本,每个用户目录一个。
于 2014-02-07T05:29:28.417 回答
2

我也有这个例外。我的解决方案是:

  • 编辑并保存提到的类(.java 文件)
  • 清理和构建项目
  • 部署到tomcat服务器
于 2013-02-20T12:17:30.127 回答
2

我刚刚在使用 Netbeans 7.4 Beta 时遇到了这种情况。

我尝试过的事情:

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

什么对我有用:

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

我不知道为什么其他任何步骤都没有修复错误。如果我在重命名缓存目录后进行了清理和构建,也许它会起作用?

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

于 2013-09-17T18:28:49.057 回答
1

JDK 对 ClassFormatError 说:

当 Java 虚拟机尝试读取类文件并确定该文件格式错误或无法解释为类文件时抛出。

也许类文件已损坏。我将执行标准的 IT 支持声明。您是否尝试过重新启动 NetBeans?

希望有帮助

于 2012-05-25T15:33:23.267 回答
0

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


更新

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

半小时后,我找到了解决方案:只需更改属性的值serialVersionUID,重新部署应用程序,然后您可以将值更改为其原始值并再次重新部署-> 工作。似乎 Tomcat 将这个类保存在内部深处的某个地方——删除工作目录并没有导致成功。

于 2012-07-10T11:25:55.180 回答