Sunday, October 2, 2022
HomeJavaCan not resolve image ‘VERSION_3_17’ in jOOQ generated code – Java, SQL...

Can not 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

Sometimes, this error is combined with different compilation errors in generated code. Its function is to assist troubleshoot these different compilation errors. This error is brought on by 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
 * would not compile, it is as a result of the runtime library makes use of an older minor
 * launch, particularly: 3.17. You may flip off the technology of this reference
 * by specifying /configuration/generator/generate/jooqVersionReference
 */
personal static ultimate 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 make it possible for the runtime model is at all times >= the code technology model.

Should 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, afterward: -->
<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 moderen runtime:

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

The above configuration shouldn’t be 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 doable, the advice is to at all times match the code technology library and the runtime library to keep away from some other hassle.

Turning off the characteristic

If this code technology characteristic bothers you, you possibly can at all times 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

Most Popular

Recent Comments