Skip to content
Advertisement

“Uncompilable source code” RuntimeException in netbeans

I’m trying to help another developer who is using Netbeans. When he runs or debugs some code of his in Netbeans (6.9.1) he gets an “Uncompilable source code” RuntimeException. I’m pretty experienced in Java but am more used to IntelliJ, and haven’t used Netbeans at all.

I’ve done it a bit of googling and it seems Netbeans will compile code even with errors, and then throw the RuntimeException at the errors. (Fairly bad behaviour IMO, but I guess some will find it useful.) I’ve got him to completely rebuild the project with no compile errors, but the RuntimeException seems to still occur. I assume he’s got some bad cached class data somewhere deep within Netbeans.

2 questions:

  1. What is the best way to clear the cache so we can find out where the uncompilable code is?
  2. Is there any way of turning off this behaviour so the code won’t run/debug unless everything will compile, so these RuntimeException’s won’t be injected into the code?

I’ve googled a fair bit, but haven’t found the answer to either of these questions yet.


Update: More information:

  1. Turning off the “compile on save” option makes the problem go away. Turning CoS back on again brings the exception back. Unfortunately this isn’t a fix, as CoS is a very useful option.
  2. http://netbeans.org/bugzilla/show_bug.cgi?id=182009 seems the closest bug report, but it has been closed as “RESOLVED INCOMPLETE”. Unfortunately the bug is hard to reproduce – the exception is happening in Java library code, when it calls a third-party library, so there isn’t anything at the point the exception is thrown we can change. And the code will work for weeks, and then suddenly start throwing this error with no obvious reason why.
  3. We’ve tried manually deleting the entire build directory – still not a fix.

Advertisement

Answer

We finally got a solution, but still don’t quite know why the situation occurs. When you have Compile On Save activated, Netbeans generates a second set of class files for debugging etc. These are stored in $USER/.netbeans/var/cache/index/s*/java/*/classes

Somehow (not sure how) this directory can get corrupted or fail to update.

If you close netbeans, delete $USER/.netbeans/var/cache/index and all subdirectories and restart netbeans this clears the cache. If you have no compile errors, your problem ought to go away at this point.

NB: $USER is your user directory – on Windows 7 this is usually c:Usersusername, I guess on Unix it will be ~username.

If you get this problem please vote for, comment on, or add information to: http://netbeans.org/bugzilla/show_bug.cgi?id=182009

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement