Affected Jira versions:
When upgrading the pocketknife-querydsl dependency for Jira apps to version 8.0.0 upwards, because of platform changes in Jira 10, an exception occurs. It’s caused by an incorrect construction of the Querydsl SQLQueryFactory.
We’re working on adding support for the latest querydsl-sql library in Jira. Until then, you need to apply one of the fixes listed below if you want to use the latest pocketknife-querydsl library. Alternatively, you can stay at the version 7 of pocketknife-querydsl for now, if that’s possible.
First, identify which dependency is bringing in the wrong version of the querydsl-sql library. To find which dependency is bringing in querydsl-sql, assuming you’re using Maven, use this command:
1 2mvn dependency:tree -Dincludes=com.querydsl:querydsl-sql
In the output, you should see something similar to the following. This output was taken from one of our test apps that had the same problem:
1 2[INFO] \- com.atlassian.jira:jira-core:jar:10.0.0-QR-20240712111851:provided [INFO] \- com.querydsl:querydsl-sql:jar:4.1.4:provided
In this case, jira-core pulled in querydsl-sql version 4.1.4 as a transitive dependency.
Then, make sure that the querydsl-sql version is provided by pocketknife-querydsl. You should see the following output from the above dependency:tree command:
1 2[INFO] \- com.atlassian.pocketknife:atlassian-pocketknife-querydsl:jar:8.0.0:compile [INFO] \- com.querydsl:querydsl-sql:jar:5.1.0:compile
To fix this, in this case, exclude querydsl-sql from jira-core:
1 2<dependency> <groupId>com.atlassian.jira</groupId> <artifactId>jira-core</artifactId> <scope>provided</scope> <!-- Start: Added exclusion --> <exclusions> <exclusion> <groupId>com.querydsl</groupId> <artifactId>querydsl-sql</artifactId> </exclusion> </exclusions> <!-- End: Added exclusion --> </dependency>
You could try reordering the dependencies to make it work. Like in this case, you could move the pocketknife-querydsl dependency declaration above the jira-core dependency declaration.
The version should be v5.1.x to match the version expected by pocketknife-querydsl. If the failing app uses jira-core with the wrong querydsl-sql version, one of the following actions should fix the app:
querydsl-sql from jira-core. The apps that are using pocketknife-querydsl expect the querydsl-sql version specified by the app, so we don't want jira-core to bring in the version. When excluding querydsl-sql from the jira-core dependency using Maven, it should look similar to this:1 2<dependency> <groupId>com.atlassian.jira</groupId> <artifactId>jira-core</artifactId> <scope>provided</scope> <exclusions> <exclusion> <groupId>com.querydsl</groupId> <artifactId>querydsl-sql</artifactId> </exclusion> </exclusions> </dependency>
pocketknife-querydsl dependency declaration above the jira-core dependency declaration.Rate this page: