Неизменяемые классы не генерируются затмение

Пытался настроить библиотеку Immutables, но, несмотря на следование руководству, Eclipse, похоже, не создает никаких классов в папке target/generated-sources/annotations.

вот скриншот компилятора Java -> Настройки обработки аннотаций

И путь Factory, показывающий, что значение Immutables-2.8.2.jar выбрано в соответствии с руководством по Immutables -- https://immutables.github.io/immutable.html.

Я запустил Project -> Clean, а затем Project -> Build All

и я получаю сообщение об ошибке в журнале ошибок: Исключение, вызванное обработчиком аннотаций Java org.immutables.processor.ProxyProcessor@63924c86

и соответствующая трассировка стека

java.lang.Exception: java.lang.UnsupportedClassVersionError: org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:172)
at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.round(RoundDispatcher.java:124)
at org.eclipse.jdt.internal.compiler.apt.dispatch.BaseAnnotationProcessorManager.processAnnotations(BaseAnnotationProcessorManager.java:171)
at org.eclipse.jdt.internal.apt.pluggable.core.dispatch.IdeAnnotationProcessorManager.processAnnotations(IdeAnnotationProcessorManager.java:138)
at org.eclipse.jdt.internal.compiler.Compiler.processAnnotationsInternal(Compiler.java:958)
at org.eclipse.jdt.internal.compiler.Compiler.processAnnotations(Compiler.java:932)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:450)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:426)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:386)
at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.compile(IncrementalImageBuilder.java:371)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:318)
at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.incrementalBuildLoop(IncrementalImageBuilder.java:190)
at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:147)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:292)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:212)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:832)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:220)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:263)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:316)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:319)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:371)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:392)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:154)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:244)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.lang.UnsupportedClassVersionError: org/eclipse/jdt/internal/compiler/apt/model/ModuleElementImpl
    at org.eclipse.jdt.internal.compiler.apt.model.PackageElementImpl.getEnclosingElement(PackageElementImpl.java:120)
    at org.immutables.value.internal.$processor$.meta.$ImportRewriteDisabler.shouldDisableFor($ImportRewriteDisabler.java:81)
    at org.immutables.value.internal.$processor$.meta.$ImportRewriteDisabler.shouldDisableFor($ImportRewriteDisabler.java:41)
    at org.immutables.value.internal.$processor$.meta.$ValueType.sourceHeader($ValueType.java:112)
    at org.immutables.value.internal.$processor$.$Generator_Immutables._t2__packageWhenTopLevel($Generator_Immutables.java:160)
    at org.immutables.value.internal.$processor$.$Generator_Immutables$FragmentDispatch.run($Generator_Immutables.java:19964)
    at org.immutables.value.internal.$generator$.$Templates$Fragment.invoke($Templates.java:248)
    at org.immutables.value.internal.$generator$.$Intrinsics.$($Intrinsics.java:96)
    at org.immutables.value.internal.$processor$.$Generator_Immutables._t4__generateImmutable($Generator_Immutables.java:320)
    at org.immutables.value.internal.$processor$.$Generator_Immutables$FragmentDispatch.run($Generator_Immutables.java:19966)
    at org.immutables.value.internal.$generator$.$Templates$Fragment.invoke($Templates.java:248)
    at org.immutables.value.internal.$generator$.$Intrinsics.$($Intrinsics.java:96)
    at org.immutables.value.internal.$processor$.$Generator_Immutables$1.run($Generator_Immutables.java:23)
    at org.immutables.value.internal.$generator$.$Templates$Fragment.invoke($Templates.java:248)
    at org.immutables.value.internal.$generator$.$Output$7.invoke($Output.java:177)
    at org.immutables.value.internal.$generator$.$Intrinsics.$($Intrinsics.java:96)
    at org.immutables.value.internal.$processor$.$Generator_Immutables._t0__generate($Generator_Immutables.java:20)
    at org.immutables.value.internal.$processor$.$Generator_Immutables$FragmentDispatch.run($Generator_Immutables.java:19962)
    at org.immutables.value.internal.$generator$.$Templates$Fragment.invoke($Templates.java:248)
    at org.immutables.value.internal.$generator$.$AbstractGenerator.invoke($AbstractGenerator.java:57)
    at org.immutables.value.internal.$processor$.$Processor.process($Processor.java:81)
    at org.immutables.value.internal.$generator$.$AbstractGenerator.process($AbstractGenerator.java:87)
    at org.immutables.processor.ProxyProcessor.process(ProxyProcessor.java:72)
    at org.eclipse.jdt.internal.compiler.apt.dispatch.RoundDispatcher.handleProcessor(RoundDispatcher.java:142)
    ... 26 more

Что я делаю не так?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 326
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш jar immutables слишком новый или слишком старый (или версия Java, которую вы используете для запуска вашего eclipse, слишком новая или слишком старая).

Вы можете проверить эту версию Java в eclipse: найдите параметр «о eclipse» (в меню Eclipse на Mac, и я думаю, что он находится в «справке» в других ОС), затем выберите вкладку конфигурации. Найдите там запись java.home=...., которая будет указывать на JVM, используемую для запуска самого eclipse. Это выбрасывает эти ошибки, или система immutables поставляется с внутренним компилятором (и ecj обычно является парсером java, который используют проекты, поскольку он быстрый и с открытым исходным кодом), и в этом случае это тот, который выбрасывает ошибки . По дорожке стека трудно сказать, кто из них виноват.

Итак, я бы проверил версию вашей неизменяемой базы данных и, если она очень старая, обновил ее. Затем я бы проверил виртуальную машину, на которой вы используете eclipse, и, если она очень старая, обновил бы ее.

На самом деле, я бы отказался от неизменяемых и просто использовал ломбок, но тогда я бы :P

Спасибо за быстрый ответ, потребовалось немного больше времени, чтобы выяснить, как обновить eclipse jre, но это исправило это!

Mike Davies 10.12.2020 17:58

Другие вопросы по теме