Точка вырезана неправильно: класс не должен быть нулевым
Из ниоткуда я получаюPointcut is malformed: Class must not be null
"ошибка в Eclipse с парой классов Aspect. Код работает нормально, но без изменений в этих классах Eclipse неожиданно начал сообщать об ошибке. Я пытаюсь отследить, является ли источник проблемы платформой / плагином eclipse обновление или обновление зависимости проекта.
Я использую Spring Tool Suite версии: 3.7.1. ID сборки RELEASE: 201510041213 Платформа: Eclipse Mars.1 (4.5.1) и платформа Spring IO 2.0.0.
У кого-нибудь есть такая же проблема?
Я выкладываю один из аспектов кода (хотя проблема, вероятно, не здесь)
@Aspect
@Order(200)
@Component
public class FooAspect {
@Around("execution(public org.springframework.http.ResponseEntity com.acme.endpoints.controller..*.*(..)) && " +
"@target(org.springframework.web.bind.annotation.RestController) && " +
"@annotation(com.acme.endpoints.annotations.FooAnnotation)")
public Object doCurrencyConversion(ProceedingJoinPoint pjp) throws Throwable {
String bar = extractBar(pjp);
ResponseEntity<?> retVal;
retVal = (ResponseEntity<?>) pjp.proceed();
processFooBar(retVal, bar);
return retVal;
}
private String extractBar(ProceedingJoinPoint pjp) {
return "...";
}
private void processFooBar(ResponseEntity<?> retVal, String targetBar) {
// ...
}
}
1 ответ
Теперь ошибки исчезли. Я изменил способ управления зависимостями Spring.
До того, как я импортировал BOM платформы в родительский POM, чтобы все мои модули наследовали его, как описано на веб-сайте Spring с:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement><repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>http://repo.spring.io/snapshot</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
При такой конфигурации некоторые версии переопределяются там, где они не работают, а поскольку используемая мной версия спецификации является SNAPSHOT, реальные версии зависимостей меняются каждый день.
Что я сделал, так это установил BOM в качестве родителя моего родителя, чтобы переопределения версий работали так, как ожидалось, и все компилировалось без подсказки:
<parent>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>2.0.0.BUILD-SNAPSHOT</version>
<relativePath />
</parent>
<repositories>
<repository>
<id>spring-snapshots</id>
<url>http://repo.spring.io/libs-snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>