Return-Path: X-Original-To: apmail-struts-issues-archive@minotaur.apache.org Delivered-To: apmail-struts-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1D82D11EEC for ; Wed, 13 Aug 2014 14:07:13 +0000 (UTC) Received: (qmail 95060 invoked by uid 500); 13 Aug 2014 14:07:12 -0000 Delivered-To: apmail-struts-issues-archive@struts.apache.org Received: (qmail 95032 invoked by uid 500); 13 Aug 2014 14:07:12 -0000 Mailing-List: contact issues-help@struts.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@struts.apache.org Delivered-To: mailing list issues@struts.apache.org Received: (qmail 95016 invoked by uid 99); 13 Aug 2014 14:07:12 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Aug 2014 14:07:12 +0000 Date: Wed, 13 Aug 2014 14:07:12 +0000 (UTC) From: "Rene Gielen (JIRA)" To: issues@struts.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (WW-4347) Support for JDK 8 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/WW-4347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14095496#comment-14095496 ] Rene Gielen commented on WW-4347: --------------------------------- Java 8 byte code is officially supported since ASM 5. XWork, however, still uses ASM 3.3 Unfortunately ASM 5 is not a drop-in replacement. I've stumbled upon the following question on SO: http://stackoverflow.com/questions/24455349/make-struts-2-compatible-with-java-8-legacy-asm-3 The author answers his own question by stating he had to patch XWork. He created the following patch: https://gist.github.com/anonymous/017b23c1d7c97c37d167 We should review the patch and check for downward compatibility. If it renders OK, we should switch to ASM 5 with XWork patch included. > Support for JDK 8 > ----------------- > > Key: WW-4347 > URL: https://issues.apache.org/jira/browse/WW-4347 > Project: Struts 2 > Issue Type: New Feature > Components: Core Actions > Affects Versions: 2.3.16.3 > Reporter: Erik Berg > Fix For: 2.5 > > Attachments: jdk8test.tar > > > Struts stumbles when encountering lambda expressions in JDK 8. Looks like org.objwectweb.asm dependency needs to be updated... > {code} > 2014-05-18 10:21:41,111 ERROR (com.opensymphony.xwork2.util.finder.ClassFinder:38) - Unable to read class [jdk8test.actions.Lambda] > java.lang.ArrayIndexOutOfBoundsException: 52264 > at org.objectweb.asm.ClassReader.readClass(Unknown Source) > at org.objectweb.asm.ClassReader.accept(Unknown Source) > at org.objectweb.asm.ClassReader.accept(Unknown Source) > at com.opensymphony.xwork2.util.finder.ClassFinder.readClassDef(ClassFinder.java:717) > at com.opensymphony.xwork2.util.finder.ClassFinder.(ClassFinder.java:112) > at org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:390) > at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:347) > at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) > at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:268) > at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) > at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:445) > at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:489) > at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74) > at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57) > at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281) > at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262) > at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:107) > at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775) > at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452) > at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) > at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) > at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:744) > {code} > Simple test case attached. > tar xvf jdk8test.tar > cd jdk8test > mvn tomcat7:run > http://localhost:8080/jdk8test -- This message was sent by Atlassian JIRA (v6.2#6252)