Immutables no classes being generated eclipse

1.8k Views Asked by At

Been trying to set up the Immutables library but despite following the guide Eclipse doesn't seem to be generating any classes in the target/generated-sources/annotations folder

here's a screenshot of the java compiler -> Annotation Processing settings

Screenshot showing Annotation Processing settings

And of the Factory path showing that the Immutables value-2.8.2.jar is selected as per the Immutables guide -- https://immutables.github.io/immutable.html.

Screenshot showing Factory Path settings

I've run Project -> Clean and then Project -> Build All

and I get an error in the Error log of: Exception thrown by Java annotation processor org.immutables.processor.ProxyProcessor@63924c86

and the corresponding stack trace

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

What am I doing wrong?

1

There are 1 best solutions below

1
On BEST ANSWER

Your immutables jar is too new or too old (or the Java version that you use to run your eclipse on is too new or too old).

You can check that java version in eclipse: Find the 'about eclipse' option (under the Eclipse menu on macs, and I think it's under 'help' on other OSes), then pick the configuration tab. Check for the java.home=.... entry in there, that'll be pointing at the JVM used to start eclipse itself. That is throwing out those errors, or, the immutables system ships with an internal compiler (and ecj is usually the java parser that projects use, as it is fast and open source), in which case that's the one that is throwing out the errors. It's hard to tell from the stack track which one's at fault.

So, I'd check the version of your immutables dep, and if it's very old, update it. Then I'd check the VM you're running eclipse on, and if it's very old, update that.

Actually, I'd ditch immutables and just use lombok, but then, I would :P