Skip to content

NoSuchFieldError: Companion when packaged in WAR #51

@PeterTrotter

Description

@PeterTrotter

We've added sib-api-v3-sdk to an older project using Maven served on tomcat 7.

<dependency>
	<groupId>com.sendinblue</groupId>
	<artifactId>sib-api-v3-sdk</artifactId>
	<version>7.0.0</version>
</dependency>

When run with mvn clean tomcat7:run everything seems fine.

Packaged as a war mvn clean tomcat7:run-war it fails with:

Caused by: java.lang.NoSuchFieldError: Companion
	at okhttp3.internal.Util.<clinit>(Util.kt:70)
	at okhttp3.OkHttpClient.<clinit>(OkHttpClient.kt:1073)
	at sendinblue.ApiClient.<init>(ApiClient.java:80)
	at sendinblue.Configuration.<clinit>(Configuration.java:18)

Attaching a debugger and evaluating Configuration.getDefaultApiClient(); gives:

Method threw 'java.lang.NoClassDefFoundError' exception.
Could not initialize class sendinblue.Configuration
sendinblue.Configuration.getDefaultApiClient(Configuration.java:27)

Looking at mvn dependency:tree:

[INFO] +- com.sendinblue:sib-api-v3-sdk:jar:7.0.0:compile
[INFO] |  +- io.swagger:swagger-annotations:jar:1.5.18:compile
[INFO] |  +- com.squareup.okhttp3:okhttp:jar:4.10.0:compile
[INFO] |  |  +- com.squareup.okio:okio-jvm:jar:3.0.0:compile
[INFO] |  |  |  \- org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.5.31:compile
[INFO] |  |  \- org.jetbrains.kotlin:kotlin-stdlib:jar:1.6.20:compile
[INFO] |  |     \- org.jetbrains:annotations:jar:13.0:compile
[INFO] |  +- com.squareup.okio:okio:jar:1.14.0:compile
[INFO] |  +- com.squareup.okhttp3:logging-interceptor:jar:4.10.0:compile
[INFO] |  |  \- org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:1.6.10:compile
[INFO] |  |     \- org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.6.10:compile
[INFO] |  +- com.google.code.gson:gson:jar:2.8.9:compile
[INFO] |  +- io.gsonfire:gson-fire:jar:1.8.2:compile
[INFO] |  +- org.threeten:threetenbp:jar:1.3.5:compile
[INFO] |  +- org.apache.commons:commons-lang3:jar:3.0:compile
[INFO] |  \- org.apache.maven.plugins:maven-gpg-plugin:jar:1.5:compile
[INFO] |     +- org.apache.maven:maven-plugin-api:jar:2.0.6:compile
[INFO] |     +- org.apache.maven:maven-project:jar:2.0.6:compile
[INFO] |     |  +- org.apache.maven:maven-settings:jar:2.0.6:compile
[INFO] |     |  +- org.apache.maven:maven-profile:jar:2.0.6:compile
[INFO] |     |  +- org.apache.maven:maven-artifact-manager:jar:2.0.6:compile
[INFO] |     |  |  +- org.apache.maven:maven-repository-metadata:jar:2.0.6:compile
[INFO] |     |  |  \- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-2:compile
[INFO] |     |  \- org.apache.maven:maven-plugin-registry:jar:2.0.6:compile
[INFO] |     +- org.apache.maven:maven-artifact:jar:2.0.6:compile
[INFO] |     +- org.apache.maven:maven-model:jar:2.0.6:compile
[INFO] |     \- org.codehaus.plexus:plexus-utils:jar:3.0.15:compile

All the jars are present in the war file WEB_INF/lib/ and there don't appear to be differing versions aside from those requested above.

Any suggestions?

It's a frustrating issue and it seems a waste of time to bypass your library and go direct to the API even though we would then get proper typing and far fewer dependencies ;-)

Targeting language level 1.8 on OpenJDK-11

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions