Tuesday, August 30, 2022
HomeProgrammingCan't resolve image ‘VERSION_3_17’ in jOOQ generated code – Java, SQL and...

Can’t resolve image ‘VERSION_3_17’ in jOOQ generated code – Java, SQL and jOOQ.


Beginning with jOOQ 3.16 and #12601, there could also be a compilation error with a message like this in your jOOQ generated code:

[ERROR] …/DefaultCatalog.java:[53,73] can’t discover image
[ERROR] image: variable VERSION_3_17
[ERROR] location: class org.jooq.Constants

Usually, this error is blended with different compilation errors in generated code. Its function is to assist troubleshoot these different compilation errors. This error is attributable to a mismatch between two jOOQ artifacts which can be being utilized by customers, together with:

  • org.jooq:jooq (the runtime library)
  • org.jooq:jooq-codegen (the code technology library)

That is additionally documented within the Javadoc of mentioned generated code:

/**
 * A reference to the three.17 minor launch of the code generator. If this
 * does not compile, it is as a result of the runtime library makes use of an older minor
 * launch, specifically: 3.17. You may flip off the technology of this reference
 * by specifying /configuration/generator/generate/jooqVersionReference
 */
personal static last String REQUIRE_RUNTIME_JOOQ_VERSION = 
    Constants.VERSION_3_17;

Similar to with the JDK that has a runtime (the JDK or JRE) and a code generator (the compiler), customers should be sure that the runtime model is all the time >= the code technology model.

In the event you see the above error, you may need a configuration like this, in your maven or gradle construct:

<!-- A runtime dependency. -->
<dependency>
    <groupId>org.jooq</groupId>
    <artifactId>jooq</artifactId>
    <model>3.16.9</model>
</dependency>

<!-- After which, in a while: -->
<plugin>
    <groupId>org.jooq</groupId>
    <artifactId>jooq-codegen-maven</artifactId>
    <model>3.17.3</model>
</plugin>

The three.17 model of the code generator will produce code that may be consumed solely by the runtime library 3.17 or newer. Whereas it’s completely high quality to make use of an older code generator with a more recent runtime:

  • org.jooq:jooq:3.17.3
  • org.jooq:jooq-codegen:3.16.9

The above configuration is just not supported:

  • org.jooq:jooq:3.16.9
  • org.jooq:jooq-codegen:3.17.3

In different phrases:

  • Generated code is ahead suitable, however not backward suitable.
  • The runtime API (which is utilized by generated code) is backward suitable, however not ahead suitable.

Nevertheless, if attainable, the advice is to all the time match the code technology library and the runtime library to keep away from another bother.

Turning off the characteristic

If this code technology characteristic bothers you, you may all the time flip it off by specifying:

<configuration>
  <generator>
    <generate>
      <jooqVersionReference>false</jooqVersionReference>
    </generate>
  </generator>
</configuration>

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments