Точка вырезана неправильно: класс не должен быть нулевым

Из ниоткуда я получаю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>
Другие вопросы по тегам