web-dev-qa-db-ja.com

MapStruct - 実装が見つかりません

最新のSpringBootとMavenを使用してビルディングを使用して、Mavenを使用して、 "start here"の例を実装しようとしています 公式マップ形式のサイト

私のコードはさらに簡単です:

pom.xml.

<org.mapstruct.version>1.3.1.Final</org.mapstruct.version>

(...)

<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>
    <version>${org.mapstruct.version}</version>
</dependency>

(...)

    <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <annotationProcessorPaths>
                <path>
                    <groupId>org.mapstruct</groupId>
                    <artifactId>mapstruct-processor</artifactId>
                    <version>${org.mapstruct.version}</version>
                </path>
            </annotationProcessorPaths>
        </configuration>
    </plugin>
 _

Car.java.

public class Car {

    private String model;

    // Constructors, setters and getters...

}
 _

Cardto.java.

public class CarDto {

    private String theModel;

    // Constructors, setters and getters...
 _

}

Carmapper.javaインターフェース

@Mapper
public interface CarMapper {

    CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );

    @Mapping(source = "model", target = "theModel")
    CarDto carToCarDto(Car car);
}
 _

メインアプリケーション

@SpringBootApplication
public class MappertestApplication {

    public static void main(String[] args) {
        SpringApplication.run(MappertestApplication.class, args);

        Car c = new Car("Volkswagen");

        CarDto cdto = CarMapper.INSTANCE.carToCarDto(c);

    }

}
 _

すべてのコードはこの公開レポにあります. https://github.com/pgbonino/mappertest

実行中は、このエラーが発生しています。

Exception in thread "main" Java.lang.ExceptionInInitializerError
    at com.gallelloit.mappertest.MappertestApplication.main(MappertestApplication.Java:14)
Caused by: Java.lang.RuntimeException: Java.lang.ClassNotFoundException: Cannot find implementation for com.gallelloit.mappertest.CarMapper
    at org.mapstruct.factory.Mappers.getMapper(Mappers.Java:61)
    at com.gallelloit.mappertest.CarMapper.<clinit>(CarMapper.Java:10)
    ... 1 more
Caused by: Java.lang.ClassNotFoundException: Cannot find implementation for com.gallelloit.mappertest.CarMapper
    at org.mapstruct.factory.Mappers.getMapper(Mappers.Java:75)
    at org.mapstruct.factory.Mappers.getMapper(Mappers.Java:58)
    ... 2 more
 _

私は この問題 公式のMapStructプロジェクトでは、同じ問題を説明するようです。ただし、その場合、いくつかのカスタム構成が実行されていました(実装のカスタム名)。私の場合にはすべてがデフォルトのままになります。

何か案が?

5
ElPiter

私のシナリオはあなたのシナリオと同じではありませんが、同じエラーをもたらしました - 私はこの答えを提示して、私がその答えを投稿して、私がしたのと同じ間違いを犯し、ここでは解決策を探しています。

私はMavenの依存関係をインポートしていました:

<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct</artifactId>
    <version>${org.mapstruct.version}</version>
</dependency>
 _

しかし、Mavenコンパイラプラグインで注釈プロセッサパスを追加するのを忘れました。

    <annotationProcessorPaths>
        <path>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>${org.mapstruct.version}</version>
        </path>
    </annotationProcessorPaths>
 _
0
João Matos