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