«Некомпилируемый исходный код» RuntimeException в netbeans

Я пытаюсь помочь другому разработчику, который использует Netbeans. Когда он запускает или отлаживает некоторый код его в Netbeans (6.9.1), он получает «Uncompilable source code» RuntimeException . Я довольно опытна на Java, но я больше привык к IntelliJ и вообще не использовал Netbeans.

Я сделал это немного для поиска в Интернете, и, похоже, Netbeans будет скомпилировать код даже с ошибками, а затем выбросить RuntimeException при ошибках. (Очень плохое поведение IMO, но я думаю, что некоторые из них сочтут это полезным.) Я попросил его полностью перестроить проект без ошибок компиляции, но RuntimeException похоже, все еще происходит. Я предполагаю, что у него есть некорректные данные кэшированного classа где-то глубоко внутри Netbeans.

2 вопроса:

  1. Каков наилучший способ очистки кеша, чтобы мы могли узнать, где находится несовместимый код?
  2. Есть ли способ отключить это поведение, чтобы код не запускался / отлаживался, если все не будет компилироваться, поэтому эти RuntimeException не будут введены в код?

Я неплохо поработал, но пока не нашел ответа на любой из этих вопросов.


Обновление: Дополнительная информация:

  1. Отключение опции «скомпилировать при сохранении» устраняет проблему. Возврат CoS снова возвращает исключение. К сожалению, это не проблема, так как CoS – очень полезный вариант.
  2. http://netbeans.org/bugzilla/show_bug.cgi?id=182009 кажется самым близким сообщением об ошибке, но он был закрыт как «RESOLVED INCOMPLETE». К сожалению, ошибка трудно воспроизвести – исключение происходит в коде библиотеки Java, когда он вызывает стороннюю библиотеку, поэтому в этой ситуации не возникает ничего, что может быть изменено. И код будет работать неделями, а затем внезапно начнет бросать эту ошибку без видимых причин.
  3. Мы попытались вручную удалить весь каталог сборки – все еще не исправление.

Наконец, мы получили решение, но до сих пор не совсем знаем, почему происходит ситуация. Когда вы активируете функцию «Скомпилировать включен», Netbeans генерирует второй набор файлов classов для отладки и т. Д. Они хранятся в $USER/.netbeans/var/cache/index/s*/java/*/classes

Как-то (не уверен, как) этот каталог может быть поврежден или не обновиться.

Если вы закрываете netbeans, удалите $USER/.netbeans/var/cache/index и все подкаталоги и перезапустите netbeans, это очистит кеш. Если у вас нет ошибок компиляции, ваша проблема должна исчезнуть на этом этапе.

NB: $ USER – это ваш каталог пользователей – в Windows 7 это обычно c:\Users\username , я думаю, что в Unix это будет ~username .

Если у вас возникла эта проблема, проголосуйте, прокомментируйте или добавьте информацию: http://netbeans.org/bugzilla/show_bug.cgi?id=182009

В NB 7.0.1 я столкнулся с одной и той же проблемой, связанной с проводной связью, мое решение hammer-IQ должно было сделать опечатку в исходном коде, запустить NB с этой ошибкой (несмотря на сообщение об ошибке), и кеш-class был успешно удален.

Я столкнулся с этой проблемой в Linux Mint Nadia с Netbeans 7.2.1, но был в тупике относительно того, где может быть место кэширования – моя была фактически расположена на

 /home/USER/.cache/netbeans/7.2.1 

а не в папке .netbeans.

Если вы не знаете, где находится кеш на вашей конкретной настройке, просто зайдите в меню помощи> о меню в Netbeans, и он скажет вам правильный путь.

Поняв, что причиной является плохой кэш из других опубликованных решений, я решил эту проблему, скопировав файл в другой каталог, удалив его из NetBeans и затем добавив его снова.

На самом деле вам не нужно удалять всю папку индекса. Когда вы открываете netbeans и ваша папка проекта активна. Netbeans начинает сканирование файлов и создает временные папки проектов (в папке индекса) для всех активных проектов. Если вы проверите файл index \ segment (его текстовый файл и его можно просмотреть в блокноте / (текстовый редактор)), вы сможете определить папки, которые представляют ваш проект. Затем вы можете удалить эти папки и перезагрузить netbeans.

* Активный проект означает те проекты, которые были открыты до отключения Netbeans.

  • Как создать статическую библиотеку с g ++?
  • Qt: не удается найти ошибку -lGL
  • Два интерфейса с одной и той же сигнатурой метода, реализованные в classе Java
  • Где хранятся статические переменные (в C / C ++)?
  • Interesting Posts
    Давайте будем гением компьютера.