Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

java.lang.reflect.InaccessibleObjectException #1190

Closed
engelenv opened this issue Mar 22, 2021 · 8 comments · Fixed by #1197
Closed

java.lang.reflect.InaccessibleObjectException #1190

engelenv opened this issue Mar 22, 2021 · 8 comments · Fixed by #1197

Comments

@engelenv
Copy link

engelenv commented Mar 22, 2021

Hi, I'm currently integrating Stripe with a Spring Boot app of mine. I'm following the documentation described here

Based of this I have a method which returns the PaymentIntentCreateParams object

private PaymentIntentCreateParams stripeParams(double amount) { 
    return PaymentIntentCreateParams.builder()
                .setAmount((long) (amount * 100))
                .setCurrency("eur")
                .addPaymentMethodType("bancontact")
                .setPaymentMethodOptions(
                        PaymentIntentCreateParams.PaymentMethodOptions.builder()
                                .putExtraParam("bancontact[preferred_language]", "nl")
                                .build())
                .build();
    }

Which is then used when calling a certain page


@GetMapping("/paymentRedirect/{name}/{lastname}/{email}/{desc}")
    public String getRedirect(Model model, @PathVariable String email, @PathVariable String desc, @PathVariable String name, @PathVariable String lastname, HttpServletRequest request) {
        System.out.println("Ik wordt geredirect: " + email + " " + desc + " " + name + " " + lastname);
        HttpSession session = request.getSession();

        // Set your secret key. Remember to switch to your live secret key in production.
        // See your keys here: https://dashboard.stripe.com/account/apikeys
        Stripe.apiKey ="mykeyhere"

                
        ;
        double price = (double) session.getAttribute("orderTotal");
        System.out.println("price: "+price);
        PaymentIntentCreateParams params = stripeParams(price);
        try {
            PaymentIntent intent = PaymentIntent.create(params);
            model.addAttribute("orderDTO", new OrderDTO());
            model.addAttribute("client_secret", intent.getClientSecret());
            model.addAttribute("name", name);
            model.addAttribute("surname", lastname);
            model.addAttribute("email", email);
            model.addAttribute("desc", desc);
            System.out.println("ID is set");
            System.out.println("Dit is de intent zijn id: " + intent.getId());
            session.setAttribute("id", intent.getId());

            return "main_pages/redirect";
        } catch (StripeException e) {
            e.printStackTrace();
            return "main_pages/error";
        }
    }

But when the actual method is called, PaymentIntent.create(params); throws an error: java.lang.reflect.InaccessibleObjectException: Unable to make private java.net.Proxy() accessible: module java.base does not "opens java.net" to unnamed module 7334aada`

Currently running Java SE 16

@jlomas-stripe
Copy link
Contributor

Can you share the whole stack trace of the error?

@engelenv
Copy link
Author

engelenv commented Mar 27, 2021

Sorry for the delay, but hereby the quite huge log

java.lang.reflect.InaccessibleObjectException: Unable to make private java.net.Proxy() accessible: module java.base does not "opens java.net" to unnamed module @7334aada at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357) ~[na:na] at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[na:na] at java.base/java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:188) ~[na:na] at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:181) ~[na:na] at com.google.gson.internal.reflect.UnsafeReflectionAccessor.makeAccessible(UnsafeReflectionAccessor.java:44) ~[gson-2.8.6.jar:na] at com.google.gson.internal.ConstructorConstructor.newDefaultConstructor(ConstructorConstructor.java:103) ~[gson-2.8.6.jar:na] at com.google.gson.internal.ConstructorConstructor.get(ConstructorConstructor.java:85) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:101) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getDelegateAdapter(Gson.java:541) ~[gson-2.8.6.jar:na] at com.stripe.model.PaymentSourceTypeAdapterFactory.create(PaymentSourceTypeAdapterFactory.java:31) ~[stripe-java-20.41.0.jar:20.41.0] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getDelegateAdapter(Gson.java:541) ~[gson-2.8.6.jar:na] at com.stripe.model.BalanceTransactionSourceTypeAdapterFactory.create(BalanceTransactionSourceTypeAdapterFactory.java:34) ~[stripe-java-20.41.0.jar:20.41.0] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create(CollectionTypeAdapterFactory.java:53) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getDelegateAdapter(Gson.java:541) ~[gson-2.8.6.jar:na] at com.stripe.model.BalanceTransactionSourceTypeAdapterFactory.create(BalanceTransactionSourceTypeAdapterFactory.java:34) ~[stripe-java-20.41.0.jar:20.41.0] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create(CollectionTypeAdapterFactory.java:53) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getDelegateAdapter(Gson.java:541) ~[gson-2.8.6.jar:na] at com.stripe.model.BalanceTransactionSourceTypeAdapterFactory.create(BalanceTransactionSourceTypeAdapterFactory.java:32) ~[stripe-java-20.41.0.jar:20.41.0] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create(CollectionTypeAdapterFactory.java:53) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:na] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.fromJson(Gson.java:931) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.fromJson(Gson.java:1003) ~[gson-2.8.6.jar:na] at com.google.gson.Gson.fromJson(Gson.java:975) ~[gson-2.8.6.jar:na] at com.stripe.net.LiveStripeResponseGetter.handleApiError(LiveStripeResponseGetter.java:134) ~[stripe-java-20.41.0.jar:20.41.0] at com.stripe.net.LiveStripeResponseGetter.request(LiveStripeResponseGetter.java:61) ~[stripe-java-20.41.0.jar:20.41.0] at com.stripe.net.ApiResource.request(ApiResource.java:179) ~[stripe-java-20.41.0.jar:20.41.0] at com.stripe.net.ApiResource.request(ApiResource.java:169) ~[stripe-java-20.41.0.jar:20.41.0] at com.stripe.model.PaymentIntent.create(PaymentIntent.java:497) ~[stripe-java-20.41.0.jar:20.41.0] at com.stripe.model.PaymentIntent.create(PaymentIntent.java:478) ~[stripe-java-20.41.0.jar:20.41.0] at com.example.demo.Servlet.getRedirect(Servlet.java:228) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[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:567) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.3.jar:5.3.3] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.3.jar:5.3.3] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.3.jar:5.3.3] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) ~[spring-webmvc-5.3.3.jar:5.3.3] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.3.jar:5.3.3] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.3.jar:5.3.3] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060) ~[spring-webmvc-5.3.3.jar:5.3.3] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.3.jar:5.3.3] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.3.jar:5.3.3] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.3.jar:5.3.3] at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.41.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.3.jar:5.3.3] at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.41.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.41.jar:9.0.41] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.3.jar:5.3.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.3.jar:5.3.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.3.jar:5.3.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.41.jar:9.0.41] at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na] 500

by simply downgrading SDK, the issue is mittigated

@unsavorypeople
Copy link

unsavorypeople commented Apr 9, 2021

I ran into the same issue:

Stripe SDK Version: 20.46.0
Google GSON Version: 2.8.6

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make private java.net.Proxy() accessible: module java.base does not "opens java.net" to unnamed module @7ff95560 at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357) ~[?:?] at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[?:?] at java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:188) ~[?:?] at java.lang.reflect.Constructor.setAccessible(Constructor.java:181) ~[?:?] at com.google.gson.internal.reflect.UnsafeReflectionAccessor.makeAccessible(UnsafeReflectionAccessor.java:44) ~[gson-2.8.6.jar:?] at com.google.gson.internal.ConstructorConstructor.newDefaultConstructor(ConstructorConstructor.java:103) ~[gson-2.8.6.jar:?] at com.google.gson.internal.ConstructorConstructor.get(ConstructorConstructor.java:85) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:101) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.getDelegateAdapter(Gson.java:541) ~[gson-2.8.6.jar:?] at com.stripe.model.PaymentSourceTypeAdapterFactory.create(PaymentSourceTypeAdapterFactory.java:31) ~[stripe-java-20.8.0.jar:20.8.0] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.CollectionTypeAdapterFactory.create(CollectionTypeAdapterFactory.java:53) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.6.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.getAdapter(Gson.java:458) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.fromJson(Gson.java:931) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.fromJson(Gson.java:897) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.fromJson(Gson.java:846) ~[gson-2.8.6.jar:?] at com.google.gson.Gson.fromJson(Gson.java:817) ~[gson-2.8.6.jar:?] at com.stripe.net.LiveStripeResponseGetter.request(LiveStripeResponseGetter.java:66) ~[stripe-java-20.8.0.jar:20.8.0] at com.stripe.net.ApiResource.request(ApiResource.java:179) ~[stripe-java-20.8.0.jar:20.8.0] at com.stripe.net.ApiResource.request(ApiResource.java:169) ~[stripe-java-20.8.0.jar:20.8.0] at com.stripe.model.Customer.create(Customer.java:240) ~[stripe-java-20.8.0.jar:20.8.0] at com.stripe.model.Customer.create(Customer.java:233) ~[stripe-java-20.8.0.jar:20.8.0]

@Marcus-Biel-idnow
Copy link

Marcus-Biel-idnow commented Apr 10, 2021

Same issue with Java 16 when I updated from 20.41.0 to 20.46.0! Using Quarkus 1.13.1.Final

java.lang.reflect.InaccessibleObjectException Unable to make private java.net.Proxy() accessible: module java.base does not "opens java.net" to unnamed module @366e2eef
AccessibleObject.java:357 java.lang.reflect.AccessibleObject.checkCanSetAccessible
AccessibleObject.java:297 java.lang.reflect.AccessibleObject.checkCanSetAccessible
Constructor.java:188 java.lang.reflect.Constructor.checkCanSetAccessible
Constructor.java:181 java.lang.reflect.Constructor.setAccessible
UnsafeReflectionAccessor.java:44 com.google.gson.internal.reflect.UnsafeReflectionAccessor.makeAccessible
ConstructorConstructor.java:103 com.google.gson.internal.ConstructorConstructor.newDefaultConstructor
ConstructorConstructor.java:85 com.google.gson.internal.ConstructorConstructor.get
ReflectiveTypeAdapterFactory.java:101 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create
Gson.java:458 com.google.gson.Gson.getAdapter
ReflectiveTypeAdapterFactory.java:117 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField
ReflectiveTypeAdapterFactory.java:166 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields
ReflectiveTypeAdapterFactory.java:102 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create
Gson.java:458 com.google.gson.Gson.getAdapter
ReflectiveTypeAdapterFactory.java:117 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField
ReflectiveTypeAdapterFactory.java:166 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields
ReflectiveTypeAdapterFactory.java:102 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create
Gson.java:458 com.google.gson.Gson.getAdapter
ReflectiveTypeAdapterFactory.java:117 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField
ReflectiveTypeAdapterFactory.java:166 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields
ReflectiveTypeAdapterFactory.java:102 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create
Gson.java:458 com.google.gson.Gson.getAdapter
Gson.java:931 com.google.gson.Gson.fromJson
Gson.java:1003 com.google.gson.Gson.fromJson
EventDataDeserializer.java:57 com.stripe.model.EventDataDeserializer.deserializeStripeObject
EventDataObjectDeserializer.java:117 com.stripe.model.EventDataObjectDeserializer.deserialize
EventDataObjectDeserializer.java:81 com.stripe.model.EventDataObjectDeserializer.getObject
StripeEventFactory.java:55 com.myproject.payment.webhook.event.StripeEventFactory.getStripeObject
StripeEventFactory.java:29 com.myproject.payment.webhook.event.StripeEventFactory.toEvent
StripeEventFactory_ClientProxy.zig:128 com.myproject.payment.webhook.event.StripeEventFactory_ClientProxy.toEvent
StripeEventProcessingService.java:83 com.myproject.payment.webhook.StripeEventProcessingService.processRawMessage
StripeEventProcessingService_Subclass.zig:217 com.myproject.payment.webhook.StripeEventProcessingService_Subclass.processRawMessage$$superaccessor1
StripeEventProcessingService_Subclass$$function$$1.zig:33 com.myproject.payment.webhook.StripeEventProcessingService_Subclass$$function$$1.apply
AroundInvokeInvocationContext.java:54 io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed
TransactionalInterceptorBase.java:127 io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx
TransactionalInterceptorBase.java:100 io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.invokeInOurTx
TransactionalInterceptorRequired.java:32 io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.doIntercept
TransactionalInterceptorBase.java:53 io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorBase.intercept
TransactionalInterceptorRequired.java:26 io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired.intercept
TransactionalInterceptorRequired_Bean.zig:340 io.quarkus.narayana.jta.runtime.interceptor.TransactionalInterceptorRequired_Bean.intercept
InterceptorInvocation.java:41 io.quarkus.arc.impl.InterceptorInvocation.invoke
AroundInvokeInvocationContext.java:41 io.quarkus.arc.impl.AroundInvokeInvocationContext.perform
InvocationContexts.java:32 io.quarkus.arc.impl.InvocationContexts.performAroundInvoke
StripeEventProcessingService_Subclass.zig:174 com.myproject.payment.webhook.StripeEventProcessingService_Subclass.processRawMessage
StripeEventProcessingService.java:65 com.myproject.payment.webhook.StripeEventProcessingService.process
StripeEventProcessingService_ClientProxy.zig:155 com.myproject.payment.webhook.StripeEventProcessingService_ClientProxy.process
StripeEventProcessTask.java:25 com.myproject.payment.webhook.StripeEventProcessTask.run
StripeEventProcessTask_Subclass.zig:191 com.myproject.payment.webhook.StripeEventProcessTask_Subclass.run$$superaccessor1
StripeEventProcessTask_Subclass$$function$$1.zig:29 com.myproject.payment.webhook.StripeEventProcessTask_Subclass$$function$$1.apply
AroundInvokeInvocationContext.java:54 io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed
ActivateRequestContextInterceptor.java:24 io.quarkus.arc.impl.ActivateRequestContextInterceptor.aroundInvoke
ActivateRequestContextInterceptor_Bean.zig:275 io.quarkus.arc.impl.ActivateRequestContextInterceptor_Bean.intercept
InterceptorInvocation.java:41 io.quarkus.arc.impl.InterceptorInvocation.invoke
AroundInvokeInvocationContext.java:41 io.quarkus.arc.impl.AroundInvokeInvocationContext.perform
InvocationContexts.java:32 io.quarkus.arc.impl.InvocationContexts.performAroundInvoke
StripeEventProcessTask_Subclass.zig:149 com.myproject.payment.webhook.StripeEventProcessTask_Subclass.run
Executors.java:515 java.util.concurrent.Executors$RunnableAdapter.call
FutureTask.java:264 java.util.concurrent.FutureTask.run
ScheduledThreadPoolExecutor.java:304 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run
ThreadPoolExecutor.java:1130 java.util.concurrent.ThreadPoolExecutor.runWorker
ThreadPoolExecutor.java:630 java.util.concurrent.ThreadPoolExecutor$Worker.run
Thread.java:831 java.lang.Thread.run

@Marcus-Biel-idnow
Copy link

I think the reason is probably this: google/gson#1875

I would welcome it if you'd remove Gson altogether. The de facto standard is Jackson these days.

@unsavorypeople
Copy link

Google Gson is also clearly no longer supported, which is concerning. We are forced to stay on Java 15 (which is End of Life) until there is a solution for this.

@tomparle
Copy link

I think the reason is probably this: google/gson#1875

I would welcome it if you'd remove Gson altogether. The de facto standard is Jackson these days.

I have also heard of moshi lib, which seems promising and maybe lighter than Jackson: https://github.com/square/moshi
If you have any experience of it, I'd be glad to have feedback !

@namero999
Copy link

Getting the same issue.

Stripe should definitely drop GSON and depend on Jackson instead. Will need to revert the build system and environments to java 14 since this is a deal breaker.

ramon-stripe added a commit to ramon-stripe/stripe-java that referenced this issue Apr 19, 2021
Also try to prevent similar problems in the future by checking that
we only use the reflection-based type adapter for classes in `com.stripe.`.
ramon-stripe added a commit to ramon-stripe/stripe-java that referenced this issue Apr 19, 2021
Also try to prevent similar problems in the future by checking that
we only use the reflection-based type adapter for classes in `com.stripe.`.
ramon-stripe added a commit to ramon-stripe/stripe-java that referenced this issue Apr 19, 2021
Also try to prevent similar problems in the future by checking that
we only use the reflection-based type adapter for classes in `com.stripe.`.
ramon-stripe added a commit to ramon-stripe/stripe-java that referenced this issue Apr 19, 2021
Also try to prevent similar problems in the future by checking that
we only use the reflection-based type adapter for classes in `com.stripe.`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants