JnRouvignac opened a new pull request #76: URL: https://github.com/apache/jclouds/pull/76
With Java 11, an illegal reflective access is output for the google cloud storage blobstore. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.jclouds.reflect.Reflection2$1 (file:/.../jclouds-core.jar) to constructor java.lang.String(char[],int,int,java.lang.Void) WARNING: Please consider reporting this to the maintainers of org.jclouds.reflect.Reflection2$1 WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release Indeed, JClouds calls `setAccessible(true)` on the package protected constructor `java.lang.String(char[],int,int,java.lang.Void)`. Investigating the code, it turns out it is looking for constructors annotated with any of: * java.beans.ConstructorProperties * org.jclouds.json.SerializedNames * com.google.inject.Inject But `String` being defined in `java.base` module, it is impossible that it will be annotated with any of these annotation. This commit is complementary to JClouds commit db4e4af931ef19f582b85f02efb93e50f1c5d01c . Reflection2.java: Do not call `setAccessible(true)` on core java constructors and methods. For reference, here is the stacktrace of this illegal access warning: java.lang.String.<init>(String.java:3208) java.lang.String.<init>(String.java:251) java.util.StringJoiner.compactElts(StringJoiner.java:250) java.util.StringJoiner.toString(StringJoiner.java:173) jdk.internal.module.IllegalAccessLogger.loudWarning(IllegalAccessLogger.java:339) jdk.internal.module.IllegalAccessLogger.log(IllegalAccessLogger.java:288) jdk.internal.module.IllegalAccessLogger.log(IllegalAccessLogger.java:261) jdk.internal.module.IllegalAccessLogger.logIfOpenedForIllegalAccess(IllegalAccessLogger.java:226) java.lang.reflect.AccessibleObject.logIfOpenedForIllegalAccess(AccessibleObject.java:366) java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:325) java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280) java.lang.reflect.Constructor.checkCanSetAccessible(Constructor.java:189) java.lang.reflect.Constructor.setAccessible(Constructor.java:182) org.jclouds.reflect.Reflection2$1.load(Reflection2$1.java:157) org.jclouds.reflect.Reflection2$1.load(Reflection2$1.java:153) com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache$LoadingValueReference.java:3529) com.google.common.cache.LocalCache$Segment.loadSync(LocalCache$Segment.java:2278) com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache$Segment.java:2155) com.google.common.cache.LocalCache$Segment.get(LocalCache$Segment.java:2045) com.google.common.cache.LocalCache.get(LocalCache.java:3953) com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3976) com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache$LocalLoadingCache.java:4960) org.jclouds.reflect.Reflection2.get(Reflection2.java:346) org.jclouds.reflect.Reflection2.constructors(Reflection2.java:100) org.jclouds.json.internal.NamingStrategies$AnnotationConstructorNamingStrategy.getDeserializer(NamingStrategies$AnnotationConstructorNamingStrategy.java:271) org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory.create(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:125) com.google.gson.Gson.getAdapter(Gson.java:458) org.jclouds.json.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) org.jclouds.json.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) org.jclouds.json.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) com.google.gson.Gson.getAdapter(Gson.java:458) com.google.gson.Gson.toJson(Gson.java:696) com.google.gson.Gson.toJson(Gson.java:683) com.google.gson.Gson.toJson(Gson.java:638) com.google.gson.Gson.toJson(Gson.java:618) org.jclouds.json.internal.GsonWrapper.toJson(GsonWrapper.java:65) org.jclouds.oauth.v2.functions.ClaimsToAssertion.apply(ClaimsToAssertion.java:59) org.jclouds.oauth.v2.functions.ClaimsToAssertion.apply(ClaimsToAssertion.java:43) org.jclouds.rest.internal.RestAnnotationProcessor.getParamValue(RestAnnotationProcessor.java:829) org.jclouds.rest.internal.RestAnnotationProcessor.getFormParamKeyValues(RestAnnotationProcessor.java:847) org.jclouds.rest.internal.RestAnnotationProcessor.addFormParams(RestAnnotationProcessor.java:435) org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:258) org.jclouds.rest.internal.RestAnnotationProcessor.apply(RestAnnotationProcessor.java:137) org.jclouds.rest.internal.InvokeHttpMethod.toCommand(InvokeHttpMethod.java:189) org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:85) org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:74) org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:45) org.jclouds.rest.internal.DelegatesToInvocationFunction.handle(DelegatesToInvocationFunction.java:156) org.jclouds.rest.internal.DelegatesToInvocationFunction.invoke(DelegatesToInvocationFunction.java:123) com.sun.proxy.$Proxy49.authorize(Unknown Source) org.jclouds.oauth.v2.filters.JWTBearerTokenFlow$AuthorizeToken.load(JWTBearerTokenFlow$AuthorizeToken.java:84) org.jclouds.oauth.v2.filters.JWTBearerTokenFlow$AuthorizeToken.load(JWTBearerTokenFlow$AuthorizeToken.java:68) com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache$LoadingValueReference.java:3529) com.google.common.cache.LocalCache$Segment.loadSync(LocalCache$Segment.java:2278) com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache$Segment.java:2155) com.google.common.cache.LocalCache$Segment.get(LocalCache$Segment.java:2045) com.google.common.cache.LocalCache.get(LocalCache.java:3953) com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3976) com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache$LocalLoadingCache.java:4960) com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache$LocalLoadingCache.java:4966) org.jclouds.oauth.v2.filters.JWTBearerTokenFlow.filter(JWTBearerTokenFlow.java:99) org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:90) org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:91) org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:74) org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:45) org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117) com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:86) com.sun.proxy.$Proxy54.simpleUpload(Unknown Source) org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore.uploadMultipartPart(GoogleCloudStorageBlobStore.java:422) org.jclouds.blobstore.internal.BaseBlobStore$BlobUploader.call(BaseBlobStore.java:415) org.jclouds.blobstore.internal.BaseBlobStore$BlobUploader.call(BaseBlobStore.java:402) com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125) com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69) com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor$Worker.java:628) java.lang.Thread.run(Thread.java:834) ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org