Skip to content

java.lang.NoClassDefFoundError: com/google/gson/ReflectionAccessFilter #1525

@mudlee

Description

@mudlee

Describe the bug

After upgrading to 22.12.0 I get this error whenever I try to connect to its API:

java.lang.NoClassDefFoundError: com/google/gson/ReflectionAccessFilter
	at ***.jobs.PaymentJob.testStripeFailure(PaymentJob.java:35) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[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:566) ~[na:na]
	at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.3.1.jar:5.3.1]
	at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.3.1.jar:5.3.1]
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]
	at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:305) ~[na:na]
	at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java) ~[na:na]
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
	at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]
Caused by: java.lang.ClassNotFoundException: com.google.gson.ReflectionAccessFilter
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na]
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
	... 14 common frames omitted

To Reproduce

  1. Create a new Java 11 project
  2. Import Stripe
  3. Try to run the following code (it's a Springboot job):
  @Scheduled(fixedRate = 60000, initialDelay = 5000)
  public void testStripeFailure() {
    logger.info("Running cron");
    final var params =
        PaymentMethodListParams.builder()
            .setType(PaymentMethodListParams.Type.CARD)
            .setCustomer("***")
            .build();

    logger.error("BEFORE GET");
    try {
      String url = ApiResource.fullUrl(Stripe.getApiBase(), options(), "/v1/payment_methods"); // <--- ERRORS HERE
    } catch (StripeException e) {
      throw new RuntimeException(e);
    }
    logger.error("AFTER GET");
  }

Expected behavior

I expect it not to fail. First the codebase was at Java 17, but I found a GSON issue, so I downgraded it to Java 11, but the issue is still the same.

With 22.3.0 it works.

Code snippets

No response

OS

macOS/Linux

Java version

Java 11

stripe-java version

v22.12.0

API version

2022-11-15

Additional context

No response

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions