NetBeans中的“不可编译的源代码”RuntimeException

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

我已经做了一些谷歌search,看来Netbeans将编译代码,即使有错误,然后抛出RuntimeException的错误。 (相当不好的行为国际海事组织,但我想有些人会发现它有用。)我让他完全重build项目没有编译错误,但RuntimeException似乎仍然发生。 我认为他在Netbeans内部有一些不好的caching类数据。

2个问题:

  1. 什么是清除caching的最好方法,以便我们可以找出不可编译代码的位置?
  2. 有什么办法closures这种行为,所以代码将不会运行/debugging,除非一切都会编译,所以这些RuntimeException将不会被注入到代码?

我已经search了一点点,但还没有find任何这些问题的答案。


更新:更多信息:

  1. closures“保存时编译”选项使问题消失。 重新开启CoS让exception恢复。 不幸的是,这不是一个解决scheme,因为CoS是一个非常有用的select。
  2. http://netbeans.org/bugzilla/show_bug.cgi?id=182009似乎是最接近的错误报告,但它已被closures为“解决不完整”。 不幸的是,这个错误很难重现 – 在Java库代码中,当调用第三方库时就会发生exception,所以在抛出exception的时候我们可以改变什么。 而代码将工作几个星期,然后突然开始抛出这个错误没有明显的原因为什么。
  3. 我们尝试手动删除整个构build目录 – 仍然不是一个修复。

我们终于find了解决办法,但仍然不清楚为什么会出现这种情况。 当你在Compile On Save中激活时,Netbeans会生成第二组用于debugging的类文件,这些文件存储在$USER/.netbeans/var/cache/index/s*/java/*/classes

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

如果closuresnetbeans,删除$USER/.netbeans/var/cache/index和所有子目录,并重新启动netbeans将清除caching。 如果你没有编译错误,你的问题应该在这一点上消失。

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

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

我在NB 7.0.1中遇到了相同的有线问题,我的锤子IQ解决scheme是在源代码中input一个拼写错误,运行带有这个错误的NB(尽pipe有错误信息),并且caching的类成功删除了。

我在Netbeans 7.2.1的Linux Mint Nadia上遇到过这个问题,但是难以理解caching位置可能在哪里 – 我实际上位于

 /home/USER/.cache/netbeans/7.2.1 

而不是在.netbeans文件夹中。

如果您不确定caching在特定安装位置的位置,只需转到Netbeans中的帮助>关于菜单,它会告诉您正确的path。

在意识到原因是来自其他发布的解决scheme的caching不佳之后,我通过将该文件复制到另一个目录,从NetBeans中删除该文件,然后再次添加它来解决此问题。

实际上,你并不需要删除整个索引文件夹。 当您打开netbeans并且您的项目文件夹处于活动状态时。 Netbeans开始扫描文件并为所有活动项目创build临时项目文件夹(在索引文件夹中)。 如果你检查index \ segments文件(它是一个文本文件,可以在记事本/(文本编辑器)中查看),你将能够识别代表你的项目的文件夹。 然后,您可以删除这些文件夹并重新启动netbeans。

*活动项目是指那些在Netbeansclosures之前打开的项目。