当前位置: 首页 > 知识库问答 >
问题:

MapStruct-找不到实现

岳嘉石
2023-03-14

使用最新的Springboot和MapStruct版本,并使用Maven构建,我试图实现官方MapStruct网站中给出的“从这里开始”示例

我的代码更简单:

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>

汽车JAVA

public class Car {

    private String model;

    // Constructors, setters and getters...

}

卡片to.java

public class CarDto {

    private String theModel;

    // Constructors, setters and getters...

}

卡马珀。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项目中发现了这个问题,它似乎描述了同样的问题。然而,在这种情况下,正在执行一些自定义配置(实现的自定义名称)。在我的情况下,一切都是默认的。

任何想法?

共有3个答案

韩楷
2023-03-14

当我在我的项目上运行给定的命令时,我的问题得到了解决-

mvn clean install

然后我注意到正在生成实现文件。我猜生成实现需要执行maven命令。

黄流觞
2023-03-14

我添加了mapstruct处理器依赖项,它对我有用

<dependency>
    <groupId>org.mapstruct</groupId>
    <artifactId>mapstruct-processor</artifactId>
    <version>1.3.1.Final</version>
</dependency>
景明诚
2023-03-14

虽然我的情况和你的不一样,但它确实导致了同样的错误——因此我发布这个答案是为了帮助其他犯下与我相同错误的人,并最终在这里寻找解决方案。

我正在导入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>
 类似资料:
  • 我知道这被问了好几次,但看起来我尝试的一切都不奏效。 我也是新手,如果我犯了任何错误,我很抱歉。 我尝试使用Gradle和eclipse构建java jar。 Gradle构建如下所示: 但我总是以: 在DefaultDependencyHandler类型的对象上找不到参数[org.springframework.boot: spring-boot-starter-data-jpa]org.gra

  • 我对Room或idk有一个问题,问题出在哪里,我需要帮助找出问题出在哪里,我使用的是Hilt DI,当创建数据库实例时它崩溃了,这是我的代码 错误 建筑格拉德尔 托多达塔。kt 托多达贝斯。kt ToDovidewModel。kt 应用模块。kt 添加片段。kt 这是我调用的函数,用于从AddFraank插入数据 我已经在这里看到了一些关于同一个问题的问题,但它对我不起作用,所以我想知道问题在哪里

  • 我正在使用mapstruct从一个DTO映射到另一个DTO。我有多个默认方法,但其中两个返回值为String,并且使用了与输入参数相同的类,这给了我“使用java MapStruct的mapping methods不明确”的错误。我在这里添加代码的相关部分: 错误是 发现将属性“Program ProgramInstance”映射到java.lang.String的映射方法不明确:java.lan

  • 我有一个Flutter项目,我正在使用一个二维码扫描器插件,这是为Android编写的Kotlin。在我的项目中添加了这个功能后,我在Android系统中遇到了构建问题,iOS系统运行良好: 我的应用程序分级: 我的项目分级: 任何帮助都会很好,因为我正要把我的笔记本电脑扔出窗外。 编辑:在AS提示后,我将Kotlin version变量更改为ext.kotlin_version='1.3.1'。

  • 当我在中使用时,它会生成一个,我希望能够访问该文件以在单元测试中导入,但intellij看不到它

  • 我在运行应用程序时得到以下错误 我的build.gradle有以下配置: 有人尝试使用androidX API吗?有人能帮忙找到解决办法吗?