Eclipse IDE 2020‑03 Отладчик делает странные вещи - PullRequest
0 голосов
/ 19 апреля 2020

Так что я столкнулся с проблемой при отладке самой последней версии Eclipse 2020-03, которую я установил для нового проекта, над которым я работаю. Сначала меня поразило, что что-то не работает правильно, когда я не могу прочитать ресурс с помощью Class.getResource (String name), так как отладчик в точке останова в getResource (..) продолжал говорить мне, что имя было пустым, в то время как я определенно предоставил путь.

Очистка, очистка, перезагрузка цели (Running Platform), обновление и перестройка ничего не изменили, поэтому я решил создать простой проект плагина OSGI с помощью только Activator и отладочная конфигурация только с минимальными комплектами.

Активатор выглядит следующим образом:

public class Activator implements BundleActivator {

        public static final String BUNDLE_ID = "test.myapp.core";

        private static BundleContext context;

        private Logger logger = Logger.getLogger(this.getClass().getName());

        static BundleContext getContext() {
            return context;
        }


        public Activator() {
            super();
            logger.info("STARTED: " + BUNDLE_ID);
        }


        @Override
        public void start(BundleContext bundleContext) throws Exception {
            logger.info("ACTIVATED: " + BUNDLE_ID);
            Activator.context = bundleContext;
            InputStream in = getClass().getResourceAsStream( "/test.cfg" );
        }


        @Override
        public void stop(BundleContext bundleContext) throws Exception {
            Activator.context = null;
        }

    }

РЕДАКТИРОВАТЬ: Изменена исходная ссылка на build.properties для test.cfg, чтобы избежать путаницы.

Но когда я запускаю отладчик, он активирует пакет, но не показывает никаких сообщений журнала. Также отладчик не будет реагировать на точки останова, которые я ввел. Как ни странно, выбор «ss» показывает мне гораздо больше пакетов, чем в конфигурации отладки.

id State Bundle
0 ACTIVE org.eclipse.osgi_3.15.200.v20200214-1600
1 ACTIVE test.myapp.core_1.0.0.qualifier
2 ACTIVE org. apache .lucene.core.source_8.4.1.v20200122-1459
3 ACTIVE javax.annotation.source_1.2.0.v201602091430
....

Это выглядит как если запущена другая конфигурация отладки, и используется ранее собранная версия моего пакета, куда сообщения журнала еще не были включены. очистка папки bin и, в конечном итоге, все метаданные также не дали никакого эффекта.

Я полностью озадачен тем, что я испытываю здесь. Надеюсь, кто-то может помочь!

1 Ответ

0 голосов
/ 19 апреля 2020

Ну что ж ... похоже, я понял, что случилось. Были сразу две проблемы:

1: Относительно проблем с getResource (String name). Параметр Bundle-ClassPath в Manifest.MF ДОЛЖЕН включать. (см. https://www.eclipse.org/forums/index.php/t/287184/), поэтому в моем случае:

Bundle-ClassPath: .,
 test.myapp.core

Bundle-ClassPath не добавляется автоматически мастерами плагинов, что может вызвать некоторые проблемы.

2: Экран конфигурации отладки в новой среде IDE выглядит очень медленным и не меняет выбранные пакеты, если вы переключаетесь с «только показывать выбранные» и обратно. В результате предыдущий список пакетов остался активным, пока он не был отмечен в редакторе конфигурации отладки.

Я отправлю отчет по этим проблемам

ДОПОЛНИТЕЛЬНО

Итак, я провел дальнейшие исследования по проблеме Bundle-ClassPath, и что, вероятно, произошло с этой записью в Manifest.MF происходило при добавлении некоторых библиотек. После того, как они были удалены снова, запись Bundle-ClassPath осталась и вызвала всевозможные проблемы. Если вы когда-либо:

1: обратите внимание, что определенные классы из пакета A вызывают исключение NoClassDefFound при использовании в пакете B
2: файл build.properties из пакета A выдает предупреждение о том, что источники отсутствует
3: другие пакеты, похоже, не вызывают этой проблемы

Проверьте, есть ли запись Bundle-ClassPath в файле Manifest.MF. Скорее всего, эта запись вызывает проблемы. Либо удалите запись в манифесте, либо добавьте,. в конце.

см .:
1: Каков предполагаемый вариант использования Bundle-Classpath в связках OSGI
2: https://bugs.eclipse.org/bugs/show_bug.cgi?id=139271

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