Open PeterTrotter opened 11 months ago
Please see https://github.com/PeterTrotter/brevo-tomcat-7 as a minimal example of the library failing when run packed in a war file on tomcat 7.
Any thoughts as to what might be causing this / solutions?
Could you confirm the okio
version is as expected:
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>1.14.0</version>
</dependency>
It seems to explicitly conflict with the transitive dependencies of com.squareup.okhttp3:okhttp:jar:4.10.0
, specifically com.squareup.okio:okio-jvm:jar:3.0.0
.
Is this strongly related to #50 ?
If okio
is required it looks like the problem is that the release 6 months ago updated okhttp-version
but not okio-version
when the two are related.
Please try this way to resolve it:
`
<artifactId>okhttp</artifactId>
<version>4.9.1</version>
`
@Bean
public OkHttpClient okHttpClient() {
return new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.build();
}
Thanks very much for your reply.
Is that the Spring @Bean
annotation?
We are not using Spring and the example I gave is the simplest packaging possible of your library on Tomcat (Just 3 small files).
Please let me know which @Bean
annotation it is so I can give it a try.
The cleanest fix I have found is to update your dependencies:
<!-- Brevo mailinglist integration -->
<dependency>
<groupId>com.sendinblue</groupId>
<artifactId>sib-api-v3-sdk</artifactId>
<version>7.0.0</version>
<exclusions>
<exclusion>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>3.0.0</version>
</dependency>
Hi all,
Faced the same issue with Spring Boot.
@Bean
public ApiClient apiClient(@Value("${brevo.api-key}") String brevoApiKey) {
ApiClient defaultClient = new ApiClient();
ApiKeyAuth apiKey = (ApiKeyAuth) defaultClient.getAuthentication("api-key");
apiKey.setApiKey(brevoApiKey);
return defaultClient;
}
Issue is throws on the first line new ApiClient()
Caused by: java.lang.NoSuchFieldError: Class okio.Options does not have member field 'okio.Options$Companion Companion'
at okhttp3.internal.Util.<clinit>(Util.kt:70)
at okhttp3.OkHttpClient.<clinit>(OkHttpClient.kt:1073)
at sendinblue.ApiClient.<init>(ApiClient.java:80)
Fixed by adding maven dependency (https://github.com/sendinblue/APIv3-java-library/issues/51#issuecomment-1737232489)
Funnily, Mailjet does have a similiar problem: mailjet/mailjet-apiv3-java#184
Problem is still present. Fix as of today is:
<dependency>
<groupId>com.sendinblue</groupId>
<artifactId>sib-api-v3-sdk</artifactId>
<version>7.0.0</version>
<exclusions>
<exclusion>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>3.6.0</version>
</dependency>
Any chance to make a new minor release to fix that issue plz? @sendinblue @getbrevo
I'd be happy to make a PR if you can make that happen :smile:
We've added
sib-api-v3-sdk
to an older project using Maven served on tomcat 7.When run with
mvn clean tomcat7:run
everything seems fine.Packaged as a war
mvn clean tomcat7:run-war
it fails with:Attaching a debugger and evaluating
Configuration.getDefaultApiClient();
gives:Looking at
mvn dependency:tree
: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