Getting error "cannot find symbol: class Scanned" while upgrading plugin from 7.2.1 to 8.2.2

Karan Sehgal August 12, 2019

I am getting following error while trying to upgrade my custom plugin from 7.2.1 to 8.2.2:

 

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project perforce-changelist-plugin: Compilation failure
[ERROR] /C:/Apps/perforce-changelist-plugin/src/main/java/com/nvidia/plugins/jira/perforcechangelist/adminui/AdminServlet.java:[29,64] cannot find symbol
[ERROR] symbol: class Scanned
[ERROR] location: package com.atlassian.plugin.spring.scanner.annotation.component

I see some packages were changed from 7.2.1 to 8.2.2. I modified those dependencies. However I don't see any spring plugins released for 8.2.2 https://mvnrepository.com/artifact/com.atlassian.jira/jira-bundled-plugins?repo=springio-plugins-release 

and I am unable to find the following dependencies in 8.2.2:

<dependency>
<groupId>com.atlassian.plugin</groupId>
<artifactId>atlassian-spring-scanner-annotation</artifactId>
<version>${atlassian.spring.scanner.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.atlassian.plugin</groupId>
<artifactId>atlassian-spring-scanner-runtime</artifactId>
<version>${atlassian.spring.scanner.version}</version>
<scope>runtime</scope>
</dependency>

 

<plugin>
<groupId>com.atlassian.plugin</groupId>
<artifactId>atlassian-spring-scanner-maven-plugin</artifactId>
<version>${atlassian.spring.scanner.version}</version>
<executions>
<execution>
<goals>
<goal>atlassian-spring-scanner</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
<configuration>
<scannedDependencies>
<dependency>
<groupId>com.atlassian.plugin</groupId>
<artifactId>atlassian-spring-scanner-external-jar</artifactId>
</dependency>
</scannedDependencies>
<verbose>false</verbose>
</configuration>
</plugin>

 

Could anybody help me figure out what needs to be done here?

 

Thank You in advance,

2 answers

1 accepted

7 votes
Answer accepted
anhnnp October 6, 2019

Changes required if you're upgrading from atlassian-spring-scanner 1.x to 2.0+

  • VERY IMPORTANT! Change all the atlassian-scanner namespaces in your spring context files (where you have <scan-indexes> - see the "Spring runtime integration" example below) from http://www.atlassian.com/schema/atlassian-scanner to http://www.atlassian.com/schema/atlassian-scanner/2
  • Remove your dependency on atlassian-spring-scanner-runtime.
  • Change your dependency on atlassian-spring-scanner-annotation to be <scope>provided</scope>.
  • atlassian-spring-scanner-processor is gone. If you had a dependency on it, remove it.
  • Add atlassian-spring-scanner-maven-plugin to <plugins> - see example below. ** If your build then fails to find org.springframework.stereotype or javax.inject, add spring-context or javax.inject to <dependencies> with <scope>provided</scope> - you'd been relying on those transitively.
  • Remove use of @Scanned - this feature is removed. All classes are now scanned.
  • Remove 'auto-imports' attribute from <scan-indexes>.
kumaravelkandhan July 2, 2021

Thank you @anhnnp 

Like # people like this
V August 30, 2021

Thanks!

Hope developers change the text of the article for beginners https://developer.atlassian.com/server/framework/atlassian-sdk/create-a-confluence-hello-world-macro/ , which specifies the com.atlassian.plugin library connection .spring.scanner.annotation.component.Scanned and adding the @Scanned keyword, which are no longer needed.

Like # people like this
Alexandru Matei February 23, 2023

We are now in February 2023 and no correction has been made to the tutorial and to the Bitbucket source code :-(

https://bitbucket.org/serverecosystem/myconfluencemacro/src/master/src/main/java/com/atlassian/tutorial/macro/helloworld.java 

1 vote
carlosridg March 8, 2021

When your code is compiled, the compiler needs to work out what each and every identifier in your code means. As the compiler is going through the code it will find something and know what to do with it or not. Your Cannot find symbol error relates to the identifiers and means that Java cannot figure out what the "symbol" means.

The general causes for a Cannot find symbol error are things like:

  • Incorrect spelling.
  • Wrong case. Halo is different from halo.
  • Improper use of acceptable identifier values (letters, numbers, underscore, dollar sign), my-class is not the same as myclass.
  • No variable declaration or variable is outside of the scope you are referencing it in.

Suggest an answer

Log in or Sign up to answer