Прежде всего, в Ломбках 1.16.x он больше не является необходимым, чтобы добавить lombok.jar к загрузочному пути к классам.
Агенты живут в своем собственном пути к классам, но совместно используют bootclasspath с обычной программой.
Агенты обычно используют инструменты для изменения байт-кода классов в вашей программе. Если эти изменения добавляют вызовы из вашей программы к коду, доступному только в банке агента, загрузчик классов приложений и верификатор будут разрешать эти вызовы с помощью пути к классам программы, используя загрузчик классов приложений, который, в свою очередь, использует родительский загрузчик классов, к загрузчику загрузки. См. Oracle documentation для получения дополнительной информации.
Поскольку агент-загрузчик классов не находится в структуре родительского класса, вы не можете вызвать код, доступный только в файле jar агента.
Самое простое решение - добавить баннер агента в bootclasspath, сделав код в банке агента доступным как для агента, так и для программы.
В lombok 1.16.x используется другой подход. Агент модифицирует загрузчик классов Eclipse, чтобы также посмотреть в lombok.jar при разрешении классов.
Раскрытие информации: Я разработчик ломбок.
Мне любопытно узнать, какие звонки требуются из программы, используя ломбок, доступный только в lombok.jar? Также я читаю здесь https://www.ibm.com/developerworks/library/j-lombok/, http://notatube.blogspot.ie/2010/11/project-lombok-trick-explained.html, что lombok делает не модифицировать байт-код, вместо этого он преобразует AST. Но вы написали выше, что он изменяет байт-код. Можете ли вы PLS. прояснить ? – Ashley
Мы меняем байт-код классов Eclipse. О, и если вы используете '@ SneakyThrows', мы также немного изменим байт-код, просто чтобы [удалить вызов Lombok.sneakyThrow] (https://github.com/rzwitserloot/lombok/blob/master/src/ ядро/Ломбок/байткодом/SneakyThrowsRemover.java # L67). –
Почему требуется изменить байт-код классов eclipse? Также у меня возникли сомнения в том, что ломбок изменит строку nos. в stacktrace, что приведет к тому, что строка nos укажет на неправильную информацию (http://stackoverflow.com/questions/37908097/line-numbers-generation-with-lombok) – Ashley