我正在尝试帮助另一个使用Netbeans的开发人员。当他在Netbeans(6.9.1)中运行或调试他的一些代码时,他得到了一个“Uncompilable源代码”RuntimeException
。我在Java方面经验丰富,但更习惯于IntelliJ,并且根本没有使用过Netbeans。
我已经完成了一些谷歌搜索,似乎Netbeans即使有错误也会编译代码,然后把错误扔到RuntimeException
。 (相当糟糕的行为IMO,但我想有些人会发现它很有用。)我让他完全重建项目没有编译错误,但RuntimeException
似乎仍然会发生。我假设他在Netbeans内部有一些糟糕的缓存类数据。
2个问题:
我已经google了一下,但还没有找到这些问题的答案。
更新:更多信息:
我们终于得到了解决方案,但仍然不太清楚为什么会出现这种情况。当您启用Compile On Save时,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
我在NB 7.0.1中遇到了相同的有线问题,我的hammer-IQ解决方案是在源代码中输入错误,使用此错误运行NB(尽管出现错误消息)并且已成功删除缓存类。
我在使用Netbeans 7.2.1的Linux Mint Nadia上遇到过这个问题,但对于缓存位置可能位于何处感到困惑 - 我的实际位于
/home/USER/.cache/netbeans/7.2.1
而不是在.netbeans文件夹中。
如果您不确定缓存在特定设置中的位置,只需转到Netbeans中的帮助>关于菜单,它会告诉您正确的路径。
在意识到原因是来自其他发布的解决方案的错误缓存之后,我通过将文件复制到另一个目录,从NetBeans中删除它,然后再次添加它来解决了这个问题。
实际上,您不需要删除整个索引文件夹。当您打开netbeans并且您的项目文件夹处于活动状态时。 Netbeans开始扫描文件并为所有活动项目创建临时项目文件夹(在索引文件夹中)。如果检查index \ segments文件(它是一个文本文件,可以在记事本/(文本编辑器)中查看),您将能够识别代表您的项目的文件夹。然后,您可以删除这些文件夹并重新启动netbeans。
*活动项目是指在Netbeans关闭之前打开的项目。