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

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

There are still some bugs to resolve!

ByteBuddy rejects to create classes with package name "java.**". Currently 
WicketNamingStrategy modifies just the class name, so creating a proxy for 
java.util.ArrayList creates class "java.util.Wicket_Proxy_ArrayList". I've 
changed the naming strategy to modify the package name: 
"bytebuddy_generated_wicket_proxy.java.util.ArrayList".

 

The next problem I faced is in wicket-spring tests. There are two Spring beans 
which differ only in their generic type - ArrayList<String> and 
ArrayList<Integer>. For some reason this mix up at injection time. I think it 
is related to the ByteBuddy class cache. Debugging it.

> 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