“不可编译的源代码” 运行时在 netbean 中的异常

2022-09-01 14:10:54

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

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

2 个问题:

  1. 清除缓存的最佳方法是什么,以便我们可以找出不可编译代码的位置?
  2. 有没有办法关闭此行为,以便代码不会运行/调试,除非所有内容都将编译,因此这些运行时Exception不会注入到代码中?

我已经用谷歌搜索了相当多的东西,但还没有找到这两个问题的答案。


更新:更多信息:

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

答案 1

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

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

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

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

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


答案 2

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


推荐