94

After upgrading to the version 2020.3 of Idea i get a NullPointerException for the mapping processor. If anybody has a clue... Thank you!

Antonio
  • 1,008
  • 1
  • 7
  • 13

6 Answers6

196

The solution is to update MapStruct to 1.4.1.Final or later version, see this issue for more details.

You can also add -Djps.track.ap.dependencies=false at File | Settings (Preferences on macOS) | Build, Execution, Deployment | Compiler | Build process VM options as a workaround.

CrazyCoder
  • 389,263
  • 172
  • 990
  • 904
  • 5
    After upgrading Mapstruct to 1.4.1.Final I am getting another issue which I did not get with 1.3 - "No method found annotated with @Named#value". Has anyone faced this problem yet? – Barun Dec 08 '20 at 03:07
  • 1
    You just need to add the @Named annotation over the method and qualifiedByName where it was used. – Javeson Yehudi Dec 09 '20 at 13:31
  • Upgrading it solved the issue for me .Thanks! – Samir Nov 06 '21 at 08:11
  • 2
    IDE should not be the driver to force lib update on a project. – dimitrisli Dec 28 '21 at 16:48
  • 5
    Thanks, adding ```-Djps.track.ap.dependencies=false``` really helped me! – ademarizu Jan 04 '22 at 18:41
  • After upgrading Mapstruct to 1.4.1.Final I am getting another issue which I did not get with 1.3 - "No method found annotated with @Named#value", and i have this method in parent class (inheritance). these methods are there for long time – uncle bob Apr 05 '22 at 02:31
  • I would add : also update `mapstruct-processor` to 1.4.1.Final or later version – ToddEmon Aug 23 '22 at 14:10
145

If you cannot update MapStruct (my case), details here.

You have to find the exact place where put the -Djps.track.ap.dependencies=false setting (and I had hard time to figure out where).

So, as they say, a picture is worth a thousand words:

Open Preferences --> Build, Execution, Deployment --> Compiler and write ps.track.ap.dependencies=false Preferences --> Build, Execution, Deployment --> Compiler

freedev
  • 25,946
  • 8
  • 108
  • 125
19

There are several intellij bugs here. If I change the maven version 1.3.0.Final to 1.4.1.Final the intellij don't want to update the version.

Solution

  1. Upgrade the maven version to 1.4.1.Final
  2. Delete manually mapstruct 1.3.1.Final from External Libraries(Project Structure | Libraries)
  3. mvn clean package
  4. Click reload all maven projects

It works without -Djps.track.ap.dependencies=false

If you have swagger exclude mapstruct first:

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger2.version}</version>
<exclusions>
    <exclusion>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
    </exclusion>
</exclusions>
Sisak
  • 559
  • 1
  • 4
  • 14
  • 1
    Manually removing the old version from the external libraries and reloading the Maven projects worked for me. – Will Feb 22 '23 at 12:38
7

Expanding on freedev's answer. For windows users the following will be the place to go :

  1. Click on the settings gear icon on the right. enter image description here
  2. Go to settings (ctrl+A+S is a good shortcut to get here).
  3. Find Compiler under Build,Execution, Deployment in the left menu enter image description here
  4. Add -Djps.track.ap.dependencies=false in User-local build process VM options
fireball.1
  • 1,413
  • 2
  • 17
  • 42
2

In my case, I made these changes and it works perfectly for me.

enter image description here

enter image description here

Then I just deleted the caches and rebuilt the entire project, maybe it wasn't necessary but that worked for me.

Suraj Rao
  • 29,388
  • 11
  • 94
  • 103
JhonaCode
  • 51
  • 4
0

In my case my build.gradle was misconfigured. I used some Mapstruct SPI AccessorNamingStrategy in two separat projects (command and custom-mapper) which I included twice in annotationProcessor of the build gradle. My solutions was to remove one of the annotations and it worked.

IgorZ
  • 1