diff --git a/hk2-configuration/persistence/hk2-xml/main/src/main/java/org/glassfish/hk2/xml/internal/JAUtilities.java b/hk2-configuration/persistence/hk2-xml/main/src/main/java/org/glassfish/hk2/xml/internal/JAUtilities.java
index 0d44733..12408e4 100755
--- a/hk2-configuration/persistence/hk2-xml/main/src/main/java/org/glassfish/hk2/xml/internal/JAUtilities.java
+++ b/hk2-configuration/persistence/hk2-xml/main/src/main/java/org/glassfish/hk2/xml/internal/JAUtilities.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -16,7 +16,6 @@
 
 package org.glassfish.hk2.xml.internal;
 
-import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
@@ -29,6 +28,7 @@
 import javassist.CtClass;
 import javassist.LoaderClassPath;
 import javassist.NotFoundException;
+import javassist.bytecode.ClassFile;
 
 import org.glassfish.hk2.api.MultiException;
 import org.glassfish.hk2.utilities.cache.Computable;
@@ -65,7 +65,7 @@
         }
             
     });
-    
+
     public final static String GET = "get";
     public final static String SET = "set";
     public final static String IS = "is";
@@ -238,8 +238,12 @@
                   CtClass generated = Generator.generate(new ClassAltClassImpl(key, classReflectionHelper),
                         jaUtilities.getBaseClass(),
                         jaUtilities.getClassPool());
-                  
-                  proxyClass = generated.toClass(key.getClassLoader(), key.getProtectionDomain());
+
+                  if (ClassFile.MAJOR_VERSION > ClassFile.JAVA_8) {
+                      proxyClass = generated.toClass(key);
+                  } else {
+                      proxyClass = generated.toClass(key.getClassLoader(), key.getProtectionDomain());
+                  }
                 }
                 catch (RuntimeException re) {
                     throw new RuntimeException("Could not compile proxy for class " + iFaceName, re);
diff --git a/hk2-locator/src/test/resources/policy.txt b/hk2-locator/src/test/resources/policy.txt
index 7d56a79..e046501 100755
--- a/hk2-locator/src/test/resources/policy.txt
+++ b/hk2-locator/src/test/resources/policy.txt
@@ -1,4 +1,4 @@
-//Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
+//Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
 //
 //This program and the accompanying materials are made available under the
 //terms of the Eclipse Public License v. 2.0, which is available at
@@ -85,6 +85,8 @@
   permission java.lang.RuntimePermission "accessDeclaredMembers";
   permission java.lang.RuntimePermission "setContextClassLoader";
   permission java.lang.RuntimePermission "createClassLoader";
+  permission java.lang.RuntimePermission "createSecurityManager";
+  permission java.lang.RuntimePermission "defineClass";
   permission java.util.PropertyPermission "javassist.*", "read";
   permission java.util.PropertyPermission "org.jvnet.*", "read";
   permission java.lang.RuntimePermission "getProtectionDomain";
diff --git a/pom.xml b/pom.xml
index 93c4129..9ba96f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-    Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
+    Copyright (c) 2010, 2021 Oracle and/or its affiliates. All rights reserved.
 
     This program and the accompanying materials are made available under the
     terms of the Eclipse Public License v. 2.0, which is available at
@@ -150,7 +150,7 @@
         <glassfish.javax.el.version>3.0.1-b10</glassfish.javax.el.version>
         <jakarta.el.version>3.0.2</jakarta.el.version>
         <jtype.version>0.1.0</jtype.version>
-        <javassist.version>3.22.0-CR2</javassist.version>
+        <javassist.version>3.27.0-GA</javassist.version>
         <junit.version>4.12</junit.version>
         <asm.version>7.1</asm.version>
         <woodstox.version>4.1.2</woodstox.version>
