58

My android project builds fine with lombok 1.16.0, but once I change my dependency to target 1.16.2, I get the following error everywhere I'm using a lombok annotation:

Error:(20, 1) error: package javax.annotation does not exist

The Android SDK does not include all javax packages. What I'm wondering is if this is a bug in 1.16.2 or do I now have to add a dependency to javax.annotation?

Note: This is in Android Studio with Lombok plugin 0.8.8

copolii
  • 14,208
  • 10
  • 51
  • 80

3 Answers3

98

You can disable the generation of javax.annotation.Generated by putting the following line in a lombok.config file in one of the top directories of your project:

lombok.addGeneratedAnnotation = false

See the configuration documentation for more information.

Disclosure: I am a Lombok Developer.

copolii
  • 14,208
  • 10
  • 51
  • 80
Roel Spilker
  • 32,258
  • 10
  • 68
  • 58
26

If you're facing same issue in Android Studio using gradle - add following line to build.gradle:

provided 'org.glassfish:javax.annotation:10.0-b28'
Alex Perevozchykov
  • 2,211
  • 22
  • 19
  • Why `10.0-b28` as opposed to `3.1.1` or `3.2-b06`? 10.x appears to be 3 years _older_ than the other versions. – Dave Jensen Jun 22 '15 at 16:48
  • 9
    Using a GlassFish dependency doesn't seem right. I prefer `compile 'javax.annotation:jsr250-api:1.0` per [this answer](http://stackoverflow.com/a/25090868/577062). Though, `jsr250-api` is rather old (2007). Note: I am using Dagger 2, not Lombok. – anon Jul 09 '15 at 15:21
-2

The right answer for android development today is to use a version of dagger which is greater than 2.1 (because of the fix mentioned by @tomrozb is integrated in 2.1)

Soham
  • 4,940
  • 3
  • 31
  • 48