[ 
https://issues.apache.org/jira/browse/CXF-8993?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andriy Redko resolved CXF-8993.
-------------------------------
    Resolution: Fixed

> Migrate from net.sf.cglib (cglib) to org.springframework.cglib (spring)
> -----------------------------------------------------------------------
>
>                 Key: CXF-8993
>                 URL: https://issues.apache.org/jira/browse/CXF-8993
>             Project: CXF
>          Issue Type: Improvement
>            Reporter: Andriy Redko
>            Assignee: Andriy Redko
>            Priority: Major
>             Fix For: 4.1.0
>
>
> The cglib [1] is not actively developed anymore and haven't seen any releases 
> since 2019. It does not work with baselines of JDK-17 or above (since it 
> shades old ASM version):
> {noformat}
>  java.lang.IllegalArgumentException: Unsupported class file major version 61 
> at net.sf.cglib.asm.$ClassReader.<init>(ClassReader.java:195) at 
> net.sf.cglib.asm.$ClassReader.<init>(ClassReader.java:176) at 
> net.sf.cglib.asm.$ClassReader.<init>(ClassReader.java:162) at 
> net.sf.cglib.asm.$ClassReader.<init>(ClassReader.java:283) at 
> net.sf.cglib.core.DuplicatesPredicate.<init>(DuplicatesPredicate.java:93) at 
> net.sf.cglib.proxy.Enhancer.getMethods(Enhancer.java:557) at 
> net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:575) at 
> net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
>  at 
> net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:332)
>  at net.sf.cglib.proxy.Enhancer.generate(Enhancer.java:492) at 
> net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96)
>  at 
> net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94)
>  at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54) at 
> java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at 
> net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61) at 
> net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34) at 
> net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119)
>  at 
> net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:294)
>  at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:480) at 
> net.sf.cglib.proxy.Enhancer.create(Enhancer.java:305) at 
> org.apache.cxf.common.util.CglibProxyHelper.getProxyInternal(CglibProxyHelper.java:71)
>  at org.apache.cxf.common.util.ProxyHelper.getProxy(ProxyHelper.java:137) at 
> org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean.createWithValues(JAXRSClientFactoryBean.java:326)
>  at 
> org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean.create(JAXRSClientFactoryBean.java:283)
>  at 
> org.apache.cxf.jaxrs.client.JAXRSClientFactoryBeanTest.testCreateClientWithTwoUserResources(JAXRSClientFactoryBeanTest.java:126)
>  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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>  at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>  at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>  at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>  at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>  at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>  at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>  at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at 
> org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at 
> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at 
> org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at 
> org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at 
> org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at 
> org.junit.runners.ParentRunner.run(ParentRunner.java:413) at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316)
>  at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
>  at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
>  at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
>  at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
>  at 
> org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) 
> at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) 
> at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
>  {noformat}
> It seems like at the moment there is no alternative but to use the 
> `org.springframework.cglib` (part of `spring-core`) that bundles patched 
> version of CGLIB that works with modern codebases.
>  
> [1]https://github.com/cglib/cglib



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

Reply via email to