[ 
https://issues.apache.org/jira/browse/KNOX-3210?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18042210#comment-18042210
 ] 

ASF subversion and git services commented on KNOX-3210:
-------------------------------------------------------

Commit fad4c0f77db993173b6f8e7a8b30ec9d7e68d706 in knox's branch 
refs/heads/dependabot/maven/org.bouncycastle-bcpkix-jdk18on-1.79 from Sandor 
Molnar
[ https://gitbox.apache.org/repos/asf?p=knox.git;h=fad4c0f77 ]

KNOX-3210 - Use a common function to set JDK17 properties across all scripts 
(#1102)



> user-auth-test KnoxCLI command isn't working on JDK17
> -----------------------------------------------------
>
>                 Key: KNOX-3210
>                 URL: https://issues.apache.org/jira/browse/KNOX-3210
>             Project: Apache Knox
>          Issue Type: Task
>          Components: KnoxCLI
>    Affects Versions: 3.0.0
>            Reporter: Sandor Molnar
>            Assignee: Sandor Molnar
>            Priority: Critical
>             Fix For: 3.0.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Run the following command in a JDK17 env:
> {code:java}
> $ bin/knoxcli.sh user-auth-test --cluster testTopology --u sam --p 
> sam-password --g{code}
> The command fails:
> {code:java}
> $ bin/knoxcli.sh user-auth-test --cluster testTopology --u sam --p 
> sam-password --g 
> Java version is 17. Adding properties to enable Knox to run on JDK 17
> SEVERE: null
> java.security.PrivilegedActionException: java.lang.NoSuchMethodException: 
> sun.misc.Unsafe.defineClass(java.lang.String,[B,int,int,java.lang.ClassLoader,java.security.ProtectionDomain)
>       at 
> java.base/java.security.AccessController.doPrivileged(AccessController.java:573)
>       at 
> com.sun.xml.bind.v2.runtime.reflect.opt.Injector.<clinit>(Injector.java:197)
>       at 
> com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(AccessorInjector.java:81)
>       at 
> com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:125)
>       at 
> com.sun.xml.bind.v2.runtime.reflect.Accessor$GetterSetterReflection.optimize(Accessor.java:402)
>       at 
> com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.<init>(SingleElementNodeProperty.java:94)
>       at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>  Method)
>       at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
>       at 
> java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>       at 
> java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
>       at 
> java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
>       at 
> com.sun.xml.bind.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:128)
>       at 
> com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:181)
>       at 
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:514)
>       at 
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:331)
>       at 
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:139)
>       at 
> com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1156)
>       at 
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:165)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
>       at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.base/java.lang.reflect.Method.invoke(Method.java:568)
>       at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:251)
>       at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:240)
>       at javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
>       at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:691)
>       at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:632)
>       at 
> org.apache.knox.gateway.util.ServiceDefinitionsLoader.getJAXBContext(ServiceDefinitionsLoader.java:61)
>       at 
> org.apache.knox.gateway.util.ServiceDefinitionsLoader.<clinit>(ServiceDefinitionsLoader.java:51)
>       at 
> org.apache.knox.gateway.deploy.DeploymentFactory.loadStacksServiceContributors(DeploymentFactory.java:704)
>       at 
> org.apache.knox.gateway.deploy.DeploymentFactory.createDeployment(DeploymentFactory.java:171)
>       at 
> org.apache.knox.gateway.util.KnoxCLI$LDAPCommand.getConfig(KnoxCLI.java:1812)
>       at 
> org.apache.knox.gateway.util.KnoxCLI$LDAPAuthCommand.execute(KnoxCLI.java:1884)
>       at org.apache.knox.gateway.util.KnoxCLI.run(KnoxCLI.java:190)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:82)
>       at org.apache.knox.gateway.util.KnoxCLI.main(KnoxCLI.java:2619)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
>       at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.base/java.lang.reflect.Method.invoke(Method.java:568)
>       at 
> org.apache.knox.gateway.launcher.Invoker.invokeMainMethod(Invoker.java:68)
>       at org.apache.knox.gateway.launcher.Invoker.invoke(Invoker.java:39)
>       at org.apache.knox.gateway.launcher.Command.run(Command.java:103)
>       at org.apache.knox.gateway.launcher.Launcher.run(Launcher.java:75)
>       at org.apache.knox.gateway.launcher.Launcher.main(Launcher.java:52)
> Caused by: java.lang.NoSuchMethodException: 
> sun.misc.Unsafe.defineClass(java.lang.String,[B,int,int,java.lang.ClassLoader,java.security.ProtectionDomain)
>       at java.base/java.lang.Class.getMethod(Class.java:2227)
>       at 
> com.sun.xml.bind.v2.runtime.reflect.opt.Injector$3.run(Injector.java:201)
>       at 
> com.sun.xml.bind.v2.runtime.reflect.opt.Injector$3.run(Injector.java:197)
>       at 
> java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
>       ... 44 more
> Exception in thread "main" java.lang.reflect.InvocationTargetException
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
>       at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.base/java.lang.reflect.Method.invoke(Method.java:568)
>       at 
> org.apache.knox.gateway.launcher.Invoker.invokeMainMethod(Invoker.java:68)
>       at org.apache.knox.gateway.launcher.Invoker.invoke(Invoker.java:39)
>       at org.apache.knox.gateway.launcher.Command.run(Command.java:103)
>       at org.apache.knox.gateway.launcher.Launcher.run(Launcher.java:75)
>       at org.apache.knox.gateway.launcher.Launcher.main(Launcher.java:52)
> Caused by: java.lang.ExceptionInInitializerError
>       at 
> org.apache.knox.gateway.deploy.DeploymentFactory.loadStacksServiceContributors(DeploymentFactory.java:704)
>       at 
> org.apache.knox.gateway.deploy.DeploymentFactory.createDeployment(DeploymentFactory.java:171)
>       at 
> org.apache.knox.gateway.util.KnoxCLI$LDAPCommand.getConfig(KnoxCLI.java:1812)
>       at 
> org.apache.knox.gateway.util.KnoxCLI$LDAPAuthCommand.execute(KnoxCLI.java:1884)
>       at org.apache.knox.gateway.util.KnoxCLI.run(KnoxCLI.java:190)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:82)
>       at org.apache.knox.gateway.util.KnoxCLI.main(KnoxCLI.java:2619)
>       ... 9 more
> Caused by: java.lang.NullPointerException: Cannot invoke 
> "java.lang.reflect.Method.invoke(Object, Object[])" because 
> "com.sun.xml.bind.v2.runtime.reflect.opt.Injector.defineClass" is null
>       at 
> com.sun.xml.bind.v2.runtime.reflect.opt.Injector.inject(Injector.java:311)
>       at 
> com.sun.xml.bind.v2.runtime.reflect.opt.Injector.inject(Injector.java:97)
>       at 
> com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(AccessorInjector.java:87)
>       at 
> com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:125)
>       at 
> com.sun.xml.bind.v2.runtime.reflect.Accessor$GetterSetterReflection.optimize(Accessor.java:402)
>       at 
> com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.<init>(SingleElementNodeProperty.java:94)
>       at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>  Method)
>       at 
> java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
>       at 
> java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>       at 
> java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
>       at 
> java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
>       at 
> com.sun.xml.bind.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:128)
>       at 
> com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:181)
>       at 
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:514)
>       at 
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:331)
>       at 
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:139)
>       at 
> com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1156)
>       at 
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:165)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
>       at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.base/java.lang.reflect.Method.invoke(Method.java:568)
>       at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:251)
>       at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:240)
>       at javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
>       at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:691)
>       at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:632)
>       at 
> org.apache.knox.gateway.util.ServiceDefinitionsLoader.getJAXBContext(ServiceDefinitionsLoader.java:61)
>       at 
> org.apache.knox.gateway.util.ServiceDefinitionsLoader.<clinit>(ServiceDefinitionsLoader.java:51)
>       ... 16 more {code}
> The reason is, that prior changes to the custom JDK17 properties in 
> {{knox-functions.sh}} were not added to {{knoxcli.sh:}}
> {code:java}
> knoxcli:
>         addAppJavaOpts " --add-exports 
> java.base/sun.security.x509=ALL-UNNAMED --add-exports 
> java.base/sun.security.pkcs=ALL-UNNAMED --add-exports 
> java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-opens 
> java.base/sun.security.util=ALL-UNNAMED"
> knox-functions:
>         addAppJavaOpts " --add-exports 
> java.base/sun.security.x509=ALL-UNNAMED --add-exports 
> java.base/sun.security.pkcs=ALL-UNNAMED --add-exports 
> java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-opens 
> java.base/sun.security.util=ALL-UNNAMED --add-exports 
> java.base/jdk.internal.misc=ALL-UNNAMED 
> --add-opens=java.base/java.lang=ALL-UNNAMED --add-exports 
> java.base/sun.net.util=ALL-UNNAMED --add-exports 
> java.base/sun.net.dns=ALL-UNNAMED"{code}
> Once I updated the knoxcli.sh script with the broader set of properties, it 
> was working like a charm:
> {code:java}
> $ bin/knoxcli.sh user-auth-test --cluster testTopology --u sam --p 
> sam-password --g 
> Java version is 17. Adding properties to enable Knox to run on JDK 17
> LDAP authentication successful!
> sam is a member of: scientist
> sam is a member of: analyst{code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to