Eclipse rcp classloader ад:перемещенный класс все еще виден во время компиляции, но больше не во время выполнения
-
05-07-2019 - |
Вопрос
У меня странная и новая проблема с приложением eclipse 3.5 rcp:Все работало нормально, затем я изменил запущенную систему и переместил один класс из одного плагина в зависимый плагин.Никакой большой проблемы, но внезапно приложение выдает жалобу на исключение class not found (или NoClassDefFoundError - точно не знаю, но посмотрю его и отредактирую сообщение ...)
Я удваиваю, утрояю, ...проверил все, что я знаю, и убедился, что манифест содержит зависимость с правильным номером версии и что пакет правильно экспортирован в другой плагин.Eclipse jdk не жалуется (ошибок / предупреждений компилятора нет), но когда я отлаживаю только до того момента, когда создается экземпляр класса, и использую 'CTRL + SHIFT + I' для проверки инструкции 'new MyClass()', во всплывающей подсказке inspectors говорится, что он не может разрешить этот класс.
Любая помощь, подсказка и ободряющий комментарий высоко ценятся!
Решение 2
Решил проблему просто случайно (и не имею ни малейшего представления, была ли это ошибка или особенность ...):
Проект плагина, в который я переместил класс, имел структуру папок, подобную maven, с src / main / java и src / test / java, обе папки определены как исходные папки.
Просто потому, что я хотел попробовать почти все, я изменил эту структуру обратно на типичную структуру eclipse, используя только src в качестве единственной исходной папки.
И, после очередной "очистки проекта", он снова запускается.Странно...?
Редактировать
спасибо за подсказку, структура папок была просто опечаткой в этом посте.
После еще долгих усилий - я совершенно уверен, что это была проблема с eclipse.После "решения", описанного выше, уже на следующий день приложению не удалось загрузить другие классы из того же плагина, и я думаю, что после перезапуска Galileo workbench проблемы исчезли.
Другие советы
Я также столкнулся с NoClassDefFoundError в приложении RCP Eclipse 3.5 Galileo, где у меня была папка src / java в одном плагине, и мне нужно было экспортировать пакет для использования другим плагином.
Решением для меня оказалось включение папки bin в качестве части пути к классу времени выполнения. Обычно это было необходимо только для включения. папку.