Skip to content

NoClassDefFoundError: javax/ws/rs/core/Configuration on application startup. #32

@flippingflop

Description

@flippingflop

This is the sendbird-related parts of build.gradle

allprojects {
    repositories {
        mavenCentral()
        maven { url "https://repo.sendbird.com/public/maven" }
    }
}


dependencies {
    implementation 'org.sendbird:sendbird-platform-sdk:1.0.25'
}

And this is the configuration.

import org.sendbird.client.ApiClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SendbirdConfig {

    @Value("${sendbird.api-token}")
    private String apiToken;

    @Value("${sendbird.application-id}")
    private String applicationId;

    @Bean
    public ApiClient apiClient() {
        try {
            ApiClient apiClient = org.sendbird.client.Configuration.getDefaultApiClient() // The error is thrown here.
                    .addDefaultHeader("Api-Token", apiToken);
            apiClient.setBasePath("https://api-" + applicationId + ".sendbird.com");
            return apiClient;
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

}

And on the app start, it throws NoClassDefFoundError.

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.sendbird.client.ApiClient]: Factory method 'apiClient' threw exception with message: javax/ws/rs/core/Configuration
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:178) ~[spring-beans-6.1.11.jar:6.1.11]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:644) ~[spring-beans-6.1.11.jar:6.1.11]
	... 33 common frames omitted
Caused by: java.lang.NoClassDefFoundError: javax/ws/rs/core/Configuration
	at org.sendbird.client.Configuration.<clinit>(Configuration.java:18) ~[sendbird-platform-sdk-1.0.25.jar:na]
	at com.my-app.my-appapi.appSendbird.config.SendbirdConfig.apiClient(SendbirdConfig.java:20) ~[main/:na]
	at com.my-app.my-appapi.appSendbird.config.SendbirdConfig$$SpringCGLIB$$0.CGLIB$apiClient$0(<generated>) ~[main/:na]
	at com.my-app.my-appapi.appSendbird.config.SendbirdConfig$$SpringCGLIB$$FastClass$$1.invoke(<generated>) ~[main/:na]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[spring-core-6.1.11.jar:6.1.11]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:348) ~[spring-context-6.1.11.jar:6.1.11]
	at com.my-app.my-appapi.appSendbird.config.SendbirdConfig$$SpringCGLIB$$0.apiClient(<generated>) ~[main/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:146) ~[spring-beans-6.1.11.jar:6.1.11]
	... 34 common frames omitted
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.core.Configuration
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]
	... 46 common frames omitted

It seems like it needs javax/ws/rs/core/Configuration class, so I manually added the dependency into build.gradle

dependencies {
    implementation 'javax.ws.rs:javax.ws.rs-api:2.1.1'
}

And then, the error has changed to LinkageError.

Caused by: java.lang.LinkageError: ClassCastException: attempting to castjar:file:/Users/my-mac/.gradle/caches/modules-2/files-2.1/javax.ws.rs/javax.ws.rs-api/2.1.1/d3466bc9321fe84f268a1adb3b90373fc14b0eb5/javax.ws.rs-api-2.1.1.jar!/javax/ws/rs/client/ClientBuilder.class to jar:file:/Users/my-mac/.gradle/caches/modules-2/files-2.1/javax.ws.rs/javax.ws.rs-api/2.1.1/d3466bc9321fe84f268a1adb3b90373fc14b0eb5/javax.ws.rs-api-2.1.1.jar!/javax/ws/rs/client/ClientBuilder.class
	at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:81) ~[javax.ws.rs-api-2.1.1.jar:2.1.1]
	at org.sendbird.client.ApiClient.buildHttpClient(ApiClient.java:1108) ~[sendbird-platform-sdk-1.0.25.jar:na]
	at org.sendbird.client.ApiClient.<init>(ApiClient.java:125) ~[sendbird-platform-sdk-1.0.25.jar:na]
	at org.sendbird.client.ApiClient.<init>(ApiClient.java:115) ~[sendbird-platform-sdk-1.0.25.jar:na]
	at org.sendbird.client.Configuration.<clinit>(Configuration.java:18) ~[sendbird-platform-sdk-1.0.25.jar:na]
	at com.my-app.my-appapi.appSendbird.config.SendbirdConfig.apiClient(SendbirdConfig.java:20) ~[main/:na]
	at com.my-app.my-appapi.appSendbird.config.SendbirdConfig$$SpringCGLIB$$0.CGLIB$apiClient$0(<generated>) ~[main/:na]
	at com.my-app.my-appapi.appSendbird.config.SendbirdConfig$$SpringCGLIB$$FastClass$$1.invoke(<generated>) ~[main/:na]
	at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[spring-core-6.1.11.jar:6.1.11]
	at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:348) ~[spring-context-6.1.11.jar:6.1.11]
	at com.my-app.my-appapi.appSendbird.config.SendbirdConfig$$SpringCGLIB$$0.apiClient(<generated>) ~[main/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:146) ~[spring-beans-6.1.11.jar:6.1.11]
	... 34 common frames omitted

I tried some other latest version of the rs-api dependency, but none of them works.
Should I add the dependency manually?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions