Title: LambdaFetchingSupport causes NoClassDefFoundError when having multiple classloader (OSGi use case) · Issue #3113 · graphql-java/graphql-java · GitHub
Open Graph Title: LambdaFetchingSupport causes NoClassDefFoundError when having multiple classloader (OSGi use case) · Issue #3113 · graphql-java/graphql-java
X Title: LambdaFetchingSupport causes NoClassDefFoundError when having multiple classloader (OSGi use case) · Issue #3113 · graphql-java/graphql-java
Description: We run into an issue with graphql.schema.fetching.LambdaFetchingSupport#mkCallFunction when having multiple classloader in our OSGi application. The 'targetClass' parameter is already loaded with the correct classloader, but later the fu...
Open Graph Description: We run into an issue with graphql.schema.fetching.LambdaFetchingSupport#mkCallFunction when having multiple classloader in our OSGi application. The 'targetClass' parameter is already loaded with t...
X Description: We run into an issue with graphql.schema.fetching.LambdaFetchingSupport#mkCallFunction when having multiple classloader in our OSGi application. The 'targetClass' parameter is already loade...
Opengraph URL: https://github.com/graphql-java/graphql-java/issues/3113
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"LambdaFetchingSupport causes NoClassDefFoundError when having multiple classloader (OSGi use case)","articleBody":"We run into an issue with graphql.schema.fetching.LambdaFetchingSupport#mkCallFunction when having multiple classloader in our OSGi application.\r\nThe 'targetClass' parameter is already loaded with the correct classloader, but later the function call tries to load the class with the classloader of graphql-java, which produces NoClassDefFoundError.\r\n\r\nIt can also be reproduced in non-OSGi use case with a test that has two class loader:\r\n\r\n```\r\nclass LambdaFetchingSupportTest extends Specification {\r\n def \"Multiple classloader in LambdaFetchingSupport\"() {\r\n when: \"Load class using GroovyShell script in order to get different classloader\"\r\n def shell = new GroovyShell(this.getClass().getClassLoader())\r\n def result = shell.run(''' package multiple.classloader.test\r\n\r\nclass MyClass{\r\n\r\n String getName(){\r\n return \"Hello\"\r\n }\r\n}\r\nreturn new MyClass()\r\n''', \"Test.script\", [])\r\n\r\n then: \"We have two different classloader now\"\r\n result.getClass().getClassLoader() != this.getClass().getClassLoader()\r\n\r\n when:\r\n def loader1 = this.getClass().getClassLoader()\r\n def myClass = result.getClass()\r\n def myClassLoader = myClass.getClassLoader()\r\n\r\n // Loading MyClass with its loader.\r\n myClassLoader.loadClass(myClass.getName())\r\n then:\r\n noExceptionThrown()\r\n\r\n when: \"Loading MyClass with another loader\"\r\n loader1.loadClass(myClass.getName())\r\n then:\r\n thrown(ClassNotFoundException)\r\n\r\n when: \"Also the LambdaFetchingSupport tries to load MyClass with different loader\"\r\n def function = LambdaFetchingSupport.mkCallFunction(myClass, \"getName\", String.class)\r\n def expectedRes = function.apply(result)\r\n\r\n then:\r\n expectedRes == \"Hello\" // But gets NoClassDefFoundError\r\n }\r\n}\r\n```\r\n\r\nThank you in advance!","author":{"url":"https://github.com/LanaLkv","@type":"Person","name":"LanaLkv"},"datePublished":"2023-03-13T10:41:14.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/3113/graphql-java/issues/3113"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:085ce4d1-f019-81f0-59d3-2fbaf58f6d6a |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C654:14F6D0:1FA60:2A8B3:6A62607B |
| html-safe-nonce | 0fef4c7c46034aee825f0828276ddffabc2bb92e5484581dff3bf923aaf04ef3 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDNjU0OjE0RjZEMDoxRkE2MDoyQThCMzo2QTYyNjA3QiIsInZpc2l0b3JfaWQiOiI1MDc3NjI4MjEwMTk4NTAzNTQ3IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | c14f4f05ed08869f582b235b182f56450f0dc874ef3aaaefc7dbef00fe1b94c5 |
| hovercard-subject-tag | issue:1621219462 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/graphql-java/graphql-java/3113/issue_layout |
| twitter:image | https://opengraph.githubassets.com/62c71db35f3bb777e3c620bc12531e0407805101739f33c8706494fc66c0cf33/graphql-java/graphql-java/issues/3113 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/62c71db35f3bb777e3c620bc12531e0407805101739f33c8706494fc66c0cf33/graphql-java/graphql-java/issues/3113 |
| og:image:alt | We run into an issue with graphql.schema.fetching.LambdaFetchingSupport#mkCallFunction when having multiple classloader in our OSGi application. The 'targetClass' parameter is already loaded with t... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | LanaLkv |
| hostname | github.com |
| expected-hostname | github.com |
| None | 6d5cd56dfa7e7ed6718ba879da3c0d884bd8b5fecd3883b5f00dcb66b8b8680f |
| turbo-cache-control | no-preview |
| go-import | github.com/graphql-java/graphql-java git https://github.com/graphql-java/graphql-java.git |
| octolytics-dimension-user_id | 14289921 |
| octolytics-dimension-user_login | graphql-java |
| octolytics-dimension-repository_id | 38602457 |
| octolytics-dimension-repository_nwo | graphql-java/graphql-java |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 38602457 |
| octolytics-dimension-repository_network_root_nwo | graphql-java/graphql-java |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | d28abcf30a4025dfeef7673e1509edbc5d402c97 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width