ClassNotFoundException für generierte Mapper -SchnittstelleJava

Java-Forum
Anonymous
 ClassNotFoundException für generierte Mapper -Schnittstelle

Post by Anonymous »

Ich erlebe eine classNotFoundException: AccountMapper Beim Versuch, den Mapstruct in Spring Boot 3.5.4 zu integrieren. Der Mapstruct -Annotationsprozessor generiert die Implementierungsklasse korrekt, aber Spring kann die Mapper -Schnittstelle während des Anwendungsstarts nicht finden.

Code: Select all

 @Mapper(componentModel = "spring")

, aber die Bean kann immer noch nicht gefunden werden. Die Schnittstelle ist im Quellcode vorhanden, erscheint erfolgreich, scheint aber für den Frühlingskontext zur Laufzeit nicht verfügbar zu sein. />Environment

[*]Spring Boot: 3.5.4
[*]MapStruct: 1.5.5.Final
[*]Java: 21
[*]Maven: 3.x Build
[*]Editor: VS Code
< /ul>
Fehlerdetails < /strong> < /p>

Code: Select all

Caused by: java.lang.ClassNotFoundException: AccountMapper
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:528)
< /code>
Description:

Field accountMapper in com.demo.demo.service.AccountService required a bean of type 'com.demo.demo.mapper.AccountMapper' that could not be found.

Action:

Consider defining a bean of type 'com.demo.demo.mapper.AccountMapper' in your configuration.

2025-08-16T13:57:58.031-05:00  WARN 60525 --- [finance-core-service] [           main] o.s.test.context.TestContextManager      : Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener] to prepare test instance [com.demo.demo.FinanceCoreServiceApplicationTests@7f72855d]

< /code>
Class, Interfaces and POM[/b]
MapStruc

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingConstants;
import com.demo.finance_core_service.dto.AccountBaseDTO;
import com.demo.finance_core_service.model.Account;

// Also tried: @Mapper(componentModel = MappingConstants.ComponentModel.SPRING)

@Mapper(componentModel = "spring")
public interface AccountMapper {

@Mapping(target = "accountId", ignore = true)
@Mapping(target = "transactions", ignore = true)
Account toEntity(AccountBaseDTO dto);

AccountBaseDTO toDto(Account entity);
}
< /code>
Generated Mapper Implementation
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2025-08-16T13:52:56-0500",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 23.0.1"
)
@Component
public class AccountMapperImpl implements AccountMapper {
// Implementation code...
}
< /code>
Service
@Service
public class AccountService {

@Autowired
private AccountRepository accountRepository;

@Autowired
private AccountMapper accountMapper;  // Bean not found

@Transactional
public Account createAccount(AccountBaseDTO newAccount) {
Account account = accountMapper.toEntity(newAccount);
return accountRepository.save(account);
}
}
< /code>
Pom.xml

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0


org.springframework.boot
spring-boot-starter-parent
3.5.4



com.demo
finance-core-service
0.0.1-SNAPSHOT
demo
demo


21
1.5.5.Final
1.18.38





org.springframework.boot
spring-boot-starter-actuator


org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-starter-webflux


org.springframework.boot
spring-boot-starter-data-jpa


org.springframework.boot
spring-boot-starter-validation




com.h2database
h2
runtime


org.postgresql
postgresql
runtime




org.springdoc
springdoc-openapi-starter-webmvc-ui
2.5.0




org.projectlombok
lombok
${lombok.version}
provided




org.mapstruct
mapstruct
${mapstruct.version}




org.springframework.boot
spring-boot-starter-test
test






org.apache.maven.plugins
maven-compiler-plugin



org.projectlombok
lombok
${lombok.version}


org.projectlombok
lombok-mapstruct-binding
0.2.0


org.mapstruct
mapstruct-processor
${mapstruct.version}



-Amapstruct.defaultComponentModel=spring





org.springframework.boot
spring-boot-maven-plugin





< /code>
I also tried to manually register the mapper as a @Bean. But it did not fix the issue.

@Configuration
public class MapperConfig {

@Bean
public AccountMapper accountMapper() {
return new AccountMapperImpl();
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post