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

Martin Tzvetanov Grigorov commented on WICKET-6913:
---------------------------------------------------

I was able to reproduce the problem by starting wicket-examples with Java 17 
b35.

It fails at start time because of the usage of wicket-jmx. Its 
org.apache.wicket.jmx.Initializer#createProxy() uses CGLib directly.

Using org.apache.wicket.proxy.objenesis.ObjenesisProxyFactory (from wicket-ioc) 
is not working because it also uses CGLib. It uses Objenesis only for 
instantiating the Class created by CGLib.

 

I see no solution for now but to wait for a new release of CGLib with 
improvements for Java 17.

Or as I suggested with WICKET-6836 to use ByteBuddy/Javassist instead of CGLib.

> Java 17 compatibility
> ---------------------
>
>                 Key: WICKET-6913
>                 URL: https://issues.apache.org/jira/browse/WICKET-6913
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-spring
>    Affects Versions: 9.4.0
>            Reporter: Robert Bain
>            Priority: Major
>
> Wicket's use of cglib means that as of Java 16, you need to specify 
> --illegal-access=permit. As of Java 17, this is no longer possible, which 
> I've verified using a JDK 17 Early-Access Build.
> See [https://github.com/cglib/cglib/issues/191]
> See 
> [https://stackoverflow.com/questions/66974846/java-lang-exceptionininitializererror-with-java-16-j-l-classformaterror-access]
>  
> {code}
> Caused by: java.lang.NoClassDefFoundError: Could not initialize class 
> net.sf.cglib.proxy.EnhancerCaused by: java.lang.NoClassDefFoundError: Could 
> not initialize class net.sf.cglib.proxy.Enhancer at 
> org.apache.wicket.proxy.LazyInitProxyFactory.createProxy(LazyInitProxyFactory.java:182)
>  at 
> org.apache.wicket.spring.injection.annot.AnnotProxyFieldValueFactory.getFieldValue(AnnotProxyFieldValueFactory.java:166)
>  at org.apache.wicket.injection.Injector.inject(Injector.java:111) at 
> org.apache.wicket.spring.injection.annot.SpringComponentInjector.inject(SpringComponentInjector.java:124)
>  at 
> org.apache.wicket.spring.injection.annot.SpringComponentInjector.onInstantiation(SpringComponentInjector.java:130)
>  at 
> org.apache.wicket.application.ComponentInstantiationListenerCollection$1.notify(ComponentInstantiationListenerCollection.java:38)
>  at 
> org.apache.wicket.application.ComponentInstantiationListenerCollection$1.notify(ComponentInstantiationListenerCollection.java:34)
>  at 
> org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80)
>  at 
> org.apache.wicket.application.ComponentInstantiationListenerCollection.onInstantiation(ComponentInstantiationListenerCollection.java:33)
>  at org.apache.wicket.Component.<init>(Component.java:690) at 
> org.apache.wicket.MarkupContainer.<init>(MarkupContainer.java:179) at 
> org.apache.wicket.Page.<init>(Page.java:171) at 
> org.apache.wicket.Page.<init>(Page.java:135) at 
> org.apache.wicket.markup.html.WebPage.<init>(WebPage.java:74)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to