使用最新的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项目中发现了这个问题,它似乎描述了同样的问题。然而,在这种情况下,正在执行一些自定义配置(实现的自定义名称)。在我的情况下,一切都是默认的。
任何想法?
当我在我的项目上运行给定的命令时,我的问题得到了解决-
mvn clean install
然后我注意到正在生成实现文件。我猜生成实现需要执行maven命令。
我添加了mapstruct处理器依赖项,它对我有用
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.1.Final</version>
</dependency>
虽然我的情况和你的不一样,但它确实导致了同样的错误——因此我发布这个答案是为了帮助其他犯下与我相同错误的人,并最终在这里寻找解决方案。
我正在导入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吗?有人能帮忙找到解决办法吗?