«Некомпилируемый исходный код» RuntimeException в netbeans - PullRequest
26 голосов
/ 08 декабря 2010

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

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

2 вопроса:

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

Я немного погуглил, но пока не нашел ответа ни на один из этих вопросов.


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

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

Ответы [ 5 ]

35 голосов
/ 08 декабря 2010

Мы наконец-то нашли решение, но до сих пор не знаем, почему возникает такая ситуация. Когда у вас активирована функция Compile On Save, Netbeans генерирует второй набор файлов классов для отладки и т. Д. Они хранятся в $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

5 голосов
/ 25 октября 2011

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

3 голосов
/ 26 апреля 2013

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

/home/USER/.cache/netbeans/7.2.1

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

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

2 голосов
/ 17 ноября 2013

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

1 голос
/ 22 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...