[MGNLLDAP-131] Magnolia LDAP-Tester doesn't work with Java 11+ Created: 18/Oct/21  Updated: 08/Jun/23

Status: Open
Project: LDAP Connector
Component/s: None
Affects Version/s: 1.10.3
Fix Version/s: None

Type: Bug Priority: Low
Reporter: Tobias Zischler Assignee: Unassigned
Resolution: Unresolved Votes: 1
Labels: quickwin
Remaining Estimate: 0d
Time Spent: 0.25d
Original Estimate: Not Specified

Issue Links:
duplicate
is duplicated by MGNLLDAP-130 Tester jar not compatible with Java 11 Closed
relation
Template:
Patch included:
Yes
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:
Epic Link: SSO support for custom IdPs
Team: AdminX

 Description   

Steps to reproduce

  1.  add magnolia-ldap-tester.jar to your tomcat server
  2.  run magnolia-ldap-tester with command as seen here

 

Expected results

magnolia-ldap-test results as seen in the documentation.

Actual results

 

Oct 12, 2021 12:17:24 PM com.google.inject.internal.MessageProcessor visit 2INFO: An exception was caught and reported. Message: java.lang.ClassNotFoundException: javax.annotation.PreDestroy 3java.lang.TypeNotPresentException: Type javax.annotation.PreDestroy not present 4 at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117) 5 at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125) 6 at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) 7 at java.base/sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68) 8 at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138) 9 at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) 10 at java.base/sun.reflect.generics.repository.FieldRepository.computeGenericType(FieldRepository.java:90) 11 at java.base/sun.reflect.generics.repository.FieldRepository.getGenericType(FieldRepository.java:82) 12 at java.base/java.lang.reflect.Field.getGenericType(Field.java:268) 13 at com.google.inject.TypeLiteral.getFieldType(TypeLiteral.java:271) 14 at com.google.inject.spi.InjectionPoint.<init>(InjectionPoint.java:94) 15 at com.google.inject.spi.InjectionPoint$InjectableField.toInjectionPoint(InjectionPoint.java:463) 16 at com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:749) 17 at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:380) 18 at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:399) 19 at com.google.inject.internal.BindingBuilder.toInstance(BindingBuilder.java:84) 20 at com.mycila.guice.ext.jsr250.Jsr250Module.configure(Jsr250Module.java:47) 21 at com.google.inject.AbstractModule.configure(AbstractModule.java:62) 22 at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340) 23 at com.google.inject.AbstractModule.install(AbstractModule.java:122) 24 at info.magnolia.objectfactory.guice.GuiceComponentProviderBuilder$1.configure(GuiceComponentProviderBuilder.java:128) 25 at com.google.inject.AbstractModule.configure(AbstractModule.java:62) 26 at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340) 27 at com.google.inject.spi.Elements.getElements(Elements.java:110) 28 at com.google.inject.util.Modules$OverrideModule.configure(Modules.java:177) 29 at com.google.inject.AbstractModule.configure(AbstractModule.java:62) 30 at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340) 31 at com.google.inject.spi.Elements.getElements(Elements.java:110) 32 at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:138) 33 at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104) 34 at com.google.inject.Guice.createInjector(Guice.java:96) 35 at com.google.inject.Guice.createInjector(Guice.java:84) 36 at info.magnolia.objectfactory.guice.GuiceComponentProviderBuilder.build(GuiceComponentProviderBuilder.java:149) 37 at info.magnolia.jaas.sp.ldap.Tester.prepare(Tester.java:118) 38 at info.magnolia.jaas.sp.ldap.Tester.doMain(Tester.java:88) 39 at info.magnolia.ldap.tool.LDAPTester.main(LDAPTester.java:84) 40Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy 41 at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) 42 at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 43 at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) 44 at java.base/java.lang.Class.forName0(Native Method) 45 at java.base/java.lang.Class.forName(Class.java:398) 46 at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114) 47 ... 35 more 48 49Exception in thread "main" com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.TypeNotPresentException: Type javax.annotation.PreDestroy not present 50 at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2218) 51 at com.google.common.cache.LocalCache.get(LocalCache.java:4147) 52 at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) 53 at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) 54 at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) 55 at com.google.inject.internal.FailableCache.get(FailableCache.java:48) 56 at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:50) 57 at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:136) 58 at com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:533) 59 at com.google.inject.internal.AbstractBindingProcessor$Processor$1.run(AbstractBindingProcessor.java:160) 60 at com.google.inject.internal.ProcessedBindingData.initializeBindings(ProcessedBindingData.java:44) 61 at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:123) 62 at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107) 63 at com.google.inject.Guice.createInjector(Guice.java:96) 64 at com.google.inject.Guice.createInjector(Guice.java:84) 65 at info.magnolia.objectfactory.guice.GuiceComponentProviderBuilder.build(GuiceComponentProviderBuilder.java:149) 66 at info.magnolia.jaas.sp.ldap.Tester.prepare(Tester.java:118) 67 at info.magnolia.jaas.sp.ldap.Tester.doMain(Tester.java:88) 68 at info.magnolia.ldap.tool.LDAPTester.main(LDAPTester.java:84) 69Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.TypeNotPresentException: Type javax.annotation.PreDestroy not present 70 at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2218) 71 at com.google.common.cache.LocalCache.get(LocalCache.java:4147) 72 at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4151) 73 at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5140) 74 at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5146) 75 at com.google.inject.internal.FailableCache.get(FailableCache.java:48) 76 at com.google.inject.internal.MembersInjectorStore.get(MembersInjectorStore.java:68) 77 at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:74) 78 at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:29) 79 at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:37) 80 at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33) 81 at com.google.inject.internal.FailableCache$1.load(FailableCache.java:37) 82 at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) 83 at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) 84 at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) 85 at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) 86 ... 18 more 87Caused by: java.lang.TypeNotPresentException: Type javax.annotation.PreDestroy not present 88 at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117) 89 at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125) 90 at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) 91 at java.base/sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68) 92 at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138) 93 at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) 94 at java.base/sun.reflect.generics.repository.FieldRepository.computeGenericType(FieldRepository.java:90) 95 at java.base/sun.reflect.generics.repository.FieldRepository.getGenericType(FieldRepository.java:82) 96 at java.base/java.lang.reflect.Field.getGenericType(Field.java:268) 97 at com.google.inject.TypeLiteral.getFieldType(TypeLiteral.java:271) 98 at com.google.inject.spi.InjectionPoint.<init>(InjectionPoint.java:94) 99 at com.google.inject.spi.InjectionPoint$InjectableField.toInjectionPoint(InjectionPoint.java:463) 100 at com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:749) 101 at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:380) 102 at com.google.inject.internal.MembersInjectorStore.createWithListeners(MembersInjectorStore.java:93) 103 at com.google.inject.internal.MembersInjectorStore.access$000(MembersInjectorStore.java:37) 104 at com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:45) 105 at com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:42) 106 at com.google.inject.internal.FailableCache$1.load(FailableCache.java:37) 107 at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3708) 108 at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2416) 109 at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2299) 110 at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2212) 111 ... 33 more 112Caused by: java.lang.ClassNotFoundException: javax.annotation.PreDestroy 113 at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) 114 at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 115 at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) 116 at java.base/java.lang.Class.forName0(Native Method) 117 at java.base/java.lang.Class.forName(Class.java:398) 118 at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114) 119 ... 55 more

 

 This error occurs due to the missing PreDestroy Annotation which is part of Java EE, which was deprecated in Java 9 and removed in Java 11.

Workaround

Build an own version of magnolia-ldap-tester.jar and include the missing javax.annotation files yourself.

Development notes

This dependency needs to be added to Maven in the magnolia-ldap-tester artifact.

 

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>

 


Generated at Mon Feb 12 02:21:51 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.