netbeans 中的“无法编译的源代码”RuntimeException

新手上路,请多包涵

我正在尝试帮助另一位使用 Netbeans 的开发人员。当他在 Netbeans (6.9.1) 中运行或调试他的一些代码时,他得到一个“不可编译的源代码” RuntimeException 。我在 Java 方面非常有经验,但更习惯于 IntelliJ,并且根本没有使用过 Netbeans。

我已经做了一些谷歌搜索,似乎 Netbeans 即使有错误也会编译代码,然后在错误处抛出 RuntimeException 。 (IMO 的行为相当糟糕,但我想有些人会发现它很有用。)我已经让他完全重建项目而没有编译错误,但 RuntimeException 似乎仍然存在。我假设他在 Netbeans 深处的某个地方有一些错误的缓存类数据。

2个问题:

  1. 清除缓存的最佳方法是什么,以便我们找出无法编译的代码在哪里?
  2. 有什么方法可以关闭此行为,除非所有内容都可以编译,否则代码不会运行/调试,因此不会将这些 RuntimeException 注入代码中?

我用谷歌搜索了一下,但还没有找到这两个问题的答案。


更新:更多信息:

  1. 关闭“保存时编译”选项会使问题消失。再次打开 CoS 会恢复异常。不幸的是,这不是解决方法,因为 CoS 是一个非常有用的选项。
  2. http://netbeans.org/bugzilla/show_bug.cgi?id=182009 似乎是最接近的错误报告,但它已被关闭为“解决不完整”。不幸的是,这个错误很难重现——异常发生在 Java 库代码中,当它调用第三方库时,所以在抛出异常时我们无法更改任何东西。代码会工作数周,然后突然开始抛出这个错误,没有明显的原因。
  3. 我们已尝试手动删除整个构建目录 - 仍然无法解决问题。

原文由 Nick Fortescue 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 535
2 个回答

我们终于找到了解决方案,但仍然不太清楚为什么会出现这种情况。当您激活“保存时编译”时,Netbeans 会生成第二组用于调试等的类文件。这些文件存储在 $USER/.netbeans/var/cache/index/s*/java/*/classes

不知何故(不确定如何)这个目录可能会损坏或无法更新。

如果关闭 netbeans,删除 $USER/.netbeans/var/cache/index 和所有子目录并重新启动 netbeans,这将清除缓存。如果您没有编译错误,那么此时您的问题应该会消失。

注意:$USER 是您的用户目录 - 在 Windows 7 上这通常是 c:\Users\username ,我猜在 Unix 上它将是 ~username

如果您遇到此问题,请投票、评论或添加信息:http://netbeans.org/bugzilla/show_bug.cgi?id= 182009

原文由 Nick Fortescue 发布,翻译遵循 CC BY-SA 2.5 许可协议

我在 NB 7.0.1 中遇到了同样的有线问题,我的 hammer-IQ 解决方案是在源代码中打错字,运行 NB 时出现此错误(尽管有错误消息),然后缓存类被成功删除。

原文由 Szymon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题