From user-return-219222-archive-asf-public=cust-asf.ponee.io@struts.apache.org Fri Jan 25 09:50:25 2019 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 53D74180608 for ; Fri, 25 Jan 2019 09:50:24 +0100 (CET) Received: (qmail 27117 invoked by uid 500); 25 Jan 2019 08:50:23 -0000 Mailing-List: contact user-help@struts.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Struts Users Mailing List" Reply-To: "Struts Users Mailing List" Delivered-To: mailing list user@struts.apache.org Received: (qmail 27105 invoked by uid 99); 25 Jan 2019 08:50:22 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 25 Jan 2019 08:50:22 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id A5F19C774B for ; Fri, 25 Jan 2019 08:50:21 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2 X-Spam-Level: ** X-Spam-Status: No, score=2 tagged_above=-999 required=6.31 tests=[DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.001, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=inform-technology-de.20150623.gappssmtp.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id AMrbv3ugw7bT for ; Fri, 25 Jan 2019 08:50:17 +0000 (UTC) Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 170CA5F478 for ; Fri, 25 Jan 2019 08:50:16 +0000 (UTC) Received: by mail-wm1-f49.google.com with SMTP id d15so5928421wmb.3 for ; Fri, 25 Jan 2019 00:50:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inform-technology-de.20150623.gappssmtp.com; s=20150623; h=subject:to:references:from:openpgp:autocrypt:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language; bh=Wa5YgFXEkRV38bjs72sIuCGVluzdXHyWycOdjXJv46A=; b=C0/DtXKjNa8g6zUufzS6yWCKdETGMBjW/MCDufY7mgzZrdETbIZoDwTSiiJfiKITaK 06bEbMXgm32tYcEw4tFhRlXzQRGQZdadnZi5tNEYBoJKtDMRTF7F8eh3AUYK9NMyX3CT OdTJ9viY/DoKKeY5xYCGtKgeTBeuQxb4sMzQ6IIGQR4i7nSRCulc3iHf+w2gWaTuKIyj +fx217Vg3VMjSvV/FncRlOleYD4aboLP6Dhv4ZzlnsgEyWD0oGbUi/DYzhBotq08Swv7 Zc79OE/PN9D8aFbtWexEbrOCEvvOFywpkd8u2jpDsJT57vuWum+NlX3cd6uGVryOKVR+ 6+lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:openpgp:autocrypt :organization:message-id:date:user-agent:mime-version:in-reply-to :content-language; bh=Wa5YgFXEkRV38bjs72sIuCGVluzdXHyWycOdjXJv46A=; b=VwxUAxJwyEKtBCzKHtXoOjyig5S8+/+7XGPitrz34+CudKUnOGTmScOg2/4EyCVWsl 1sZr98U+Px4ctmmw6BeGDiflFva8qnIaC5dOgiXCw0z8ks0CoemVT/rBemx9KUFzMzf0 GbEe6PgsJUDq5Pb91TBjxRSgvzWv0MFVP5vK3VjOcmDU6mTdIG+3sdnAmw9y0FOM3T5I A04S/K0pjXcmFvi35K66Rh5keXVC4ZhUpYGBc6+hHfd4r3fmsKVV0RJ+UrvPTGyblBKa oeWfWnJ0E2Oc6z/BiUZouTmf/FaPRcKTYNl+7e0QDr3DyDMqss4v2/xmiqvWTMg98rS+ HQVw== X-Gm-Message-State: AJcUukcvMXLfEprbx3Z9tXg7F3/sKKa63g8xFkapGZg9qoOA0a4+OM/f /H7uDOwNGCLzJRxW0eBzpUTpp8w8lh0FFw== X-Google-Smtp-Source: ALg8bN6p/aPxJ4TayA7B4ALBi1jGszQqjuHSaM+8e0u2MUhg+NkJ3A4qz7vivocbkCX+RLckyjV8fg== X-Received: by 2002:a1c:c181:: with SMTP id r123mr5986776wmf.8.1548406216018; Fri, 25 Jan 2019 00:50:16 -0800 (PST) Received: from [192.168.33.27] (pd95c2e58.dip0.t-ipconnect.de. [217.92.46.88]) by smtp.googlemail.com with ESMTPSA id h10sm57691060wmf.44.2019.01.25.00.50.14 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 25 Jan 2019 00:50:15 -0800 (PST) Subject: Re: Java 11 support To: user@struts.apache.org References: <73ca4e23-1a59-b6d4-8dc9-7df5828216ff@inform-technology.de> <2c13331d-5cd9-1fa5-c3fe-3fb4bd404a31@inform-technology.de> From: =?UTF-8?Q?Sebastian_G=c3=b6tz?= Openpgp: preference=signencrypt Autocrypt: addr=s.goetz@inform-technology.de; keydata= mDMEXEngihYJKwYBBAHaRw8BAQdA86QSVa0SuMnZ6i4PmYwBPy4ZnPjwmy8cqADYXlThCTS0 LlNlYmFzdGlhbiBHw7Z0eiA8cy5nb2V0ekBpbmZvcm0tdGVjaG5vbG9neS5kZT6IlgQTFggA PhYhBMibY5QkJZSfCqgY7sz2A12g4XmSBQJcSeCKAhsjBQkWcnSmBQsJCAcCBhUKCQgLAgQW AgMBAh4BAheAAAoJEMz2A12g4XmSlZMBAIjjhb1ZX9G5DvjnE2k68M4fFYyYLJEs+MW6wacy XvafAP9hyF7QWQD+s+92JRh7k25tQBJWV7gfAItcn7FNwIH6Abg4BFxJ4IoSCisGAQQBl1UB BQEBB0CV7NMmF+2nU9Fv51Bs7FXmbbq9yXa26lVpRDJHGH4FVAMBCAeIfgQYFggAJhYhBMib Y5QkJZSfCqgY7sz2A12g4XmSBQJcSeCKAhsMBQkWcnSmAAoJEMz2A12g4XmS9gIA/jd4hsBk aQjRcnau4+MxiuRhFSnShvUCZ/gJJROozZXUAQD0M5i6mx+wS5KjUfE+GMRBud6XUml2FC96 RyLNeI1sAw== Organization: iNFORM Technology GmbH Message-ID: <0eaabe6d-5842-9f41-8b8b-7ef4953e0c38@inform-technology.de> Date: Fri, 25 Jan 2019 09:50:14 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/alternative; boundary="------------991DCD8B7898952F7EA89831" Content-Language: de-DE --------------991DCD8B7898952F7EA89831 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hey guys, I can tell you now that my other problems or not related to the ASM configuration or Java 11. In the Apache JIRA I have created another issues (https://issues.apache.org/jira/browse/WW-5006) which is related to OGNL accessing static fields. Kind regards, Sebastian Am 24.01.2019 um 12:13 schrieb Yasser Zamani: > Hi Sebastian, thanks again for your time to feed back! It's really a > great help. > > Regarding the web app doesn't work, it always a good practice to enable= > devMode and set log mode to warn or at next step to debug. > > Kind Regards. > > On 1/24/2019 2:11 PM, Sebastian G=C3=B6tz wrote: >> Hello Yasser, >> >> I have followed your instructions. The exceptions are gone although my= >> webapp does not work either. >> But I need more time to figure out whether this is a general >> compatibility issue between struts2 2.5.2 and 2.5.20 or a matter of th= e >> Java 11 compiler. >> >> >> Am 23.01.2019 um 08:17 schrieb Yasser Zamani: >>>> -----Original Message----- >>>> From: Sebastian G=C3=B6tz >>>> Sent: Thursday, January 17, 2019 4:41 PM >>>> To: user@struts.apache.org >>>> Subject: Re: Java 11 support >>>> >>>> Hi folks, >>>> >>>> it appears that there is some work left in the convention plugin. As= I can see from >>>> my IVY resolve process this plugin drags in asm 5.2. From its source= s it looks like it >>>> supports class version up to 1.8 (class version 52). >>>> As we compile with JDK 11 already (class version 55) we get a lot of= these >>>> exceptions: >>>> >>>> =C2=A0java.lang.IllegalArgumentException >>>> =C2=A0=C2=A0=C2=A0 at org.objectweb.asm.ClassReader.(Unknown S= ource) >>>> =C2=A0=C2=A0=C2=A0 at org.objectweb.asm.ClassReader.(Unknown S= ource) >>>> =C2=A0=C2=A0=C2=A0 at org.objectweb.asm.ClassReader.(Unknown S= ource) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.DefaultClassFinder.readClassDef(Defaul= tClassFind >>>> er.java:461) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.DefaultClassFinder.(DefaultClass= Finder.java: >>>> 93) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildC= lassFind >>>> er(PackageBasedActionConfigBuilder.java:395) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.PackageBasedActionConfigBuilder.findAc= tions(Pa >>>> ckageBasedActionConfigBuilder.java:377) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildA= ctionCo >>>> nfigs(PackageBasedActionConfigBuilder.java:333) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(= Classpat >>>> hPackageProvider.java:52) >>>> =C2=A0=C2=A0=C2=A0 at >>>> com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadConta= iner(D >>>> efaultConfiguration.java:206) >>>> =C2=A0=C2=A0=C2=A0 at >>>> com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration= (Con >>>> figurationManager.java:66) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.jav= a:957) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(D= ispatcher.j >>>> ava:463) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.struts2.dispatcher.Dispatcher.init(= Dispatcher.java:496) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOper= ations.java:7 >>>> 3) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.i= nit(StrutsPrep >>>> areAndExecuteFilter.java:61) >>>> =C2=A0=C2=A0=C2=A0 at >>>> eu.inform.servlet.context.URIExcludeFilter.init(URIExcludeFilter.jav= a:37) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ApplicationFilterConfig.initFilter(Applicat= ionFilterConfig >>>> .java:270) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ApplicationFilterConfig.getFilter(Applicati= onFilterConfig >>>> .java:251) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ApplicationFilterConfig.(ApplicationF= ilterConfig.ja >>>> va:102) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardContext.filterStart(StandardContext= =2Ejava:4491) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardContext.startInternal(StandardConte= xt.java:51 >>>> 35) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.util.LifecycleBase.start(L= ifecycleBase.java:183) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase= =2Ejava:1432 >>>> ) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase= =2Ejava:1422 >>>> ) >>>> =C2=A0=C2=A0=C2=A0 at java.base/java.util.concurrent.FutureTask.run(= FutureTask.java:264) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineE= xecutorServ >>>> ice.java:75) >>>> =C2=A0=C2=A0=C2=A0 at >>>> java.base/java.util.concurrent.AbstractExecutorService.submit(Abstra= ctExecutorS >>>> ervice.java:140) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.j= ava:944) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardHost.startInternal(StandardHost.jav= a:831) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.util.LifecycleBase.start(L= ifecycleBase.java:183) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase= =2Ejava:1432 >>>> ) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase= =2Ejava:1422 >>>> ) >>>> =C2=A0=C2=A0=C2=A0 at java.base/java.util.concurrent.FutureTask.run(= FutureTask.java:264) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineE= xecutorServ >>>> ice.java:75) >>>> =C2=A0=C2=A0=C2=A0 at >>>> java.base/java.util.concurrent.AbstractExecutorService.submit(Abstra= ctExecutorS >>>> ervice.java:140) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.j= ava:944) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardEngine.startInternal(StandardEngine= =2Ejava:261) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.util.LifecycleBase.start(L= ifecycleBase.java:183) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardService.startInternal(StandardServi= ce.java:422) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.util.LifecycleBase.start(L= ifecycleBase.java:183) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardServer.startInternal(StandardServer= =2Ejava:801) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.util.LifecycleBase.start(L= ifecycleBase.java:183) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.startup.Catalina.start(Cat= alina.java:695) >>>> =C2=A0=C2=A0=C2=A0 at >>>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Nati= ve >>>> Method) >>>> =C2=A0=C2=A0=C2=A0 at >>>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Nativ= eMethodA >>>> ccessorImpl.java:62) >>>> =C2=A0=C2=A0=C2=A0 at >>>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(D= elegating >>>> MethodAccessorImpl.java:43) >>>> =C2=A0=C2=A0=C2=A0 at java.base/java.lang.reflect.Method.invoke(Meth= od.java:566) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.startup.Bootstrap.start(Bo= otstrap.java:350) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.startup.Bootstrap.main(Boo= tstrap.java:492) >>>> >>>> I tried to exclude asm 5.2 on favor of 7.0 which works from the depe= ndency >>>> resolving side. But the Struts2 ClassVisitor implementation is tied = to ASM 5: >>>> >>>> public class InfoBuildingVisitor extends ClassVisitor { >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 private Info info; >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 private ClassFinder class= Finder; >>>> >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 public InfoBuildingVisito= r(ClassFinder classFinder) { >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 s= uper(Opcodes.ASM5); >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 t= his.classFinder =3D classFinder; >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } >>>> ... >>>> } >>>> >>>> Therefore this leads to the following problem: >>>> >>>> java.lang.UnsupportedOperationException: This feature requires ASM7 >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.objectweb.asm.ClassVisitor.visitNestMember(ClassVisitor.java:236= ) >>>> =C2=A0=C2=A0=C2=A0 at org.objectweb.asm.ClassReader.accept(ClassRead= er.java:651) >>>> =C2=A0=C2=A0=C2=A0 at org.objectweb.asm.ClassReader.accept(ClassRead= er.java:391) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.DefaultClassFinder.readClassDef(Defaul= tClassFind >>>> er.java:462) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.DefaultClassFinder.(DefaultClass= Finder.java: >>>> 93) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildC= lassFind >>>> er(PackageBasedActionConfigBuilder.java:395) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.PackageBasedActionConfigBuilder.findAc= tions(Pa >>>> ckageBasedActionConfigBuilder.java:377) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildA= ctionCo >>>> nfigs(PackageBasedActionConfigBuilder.java:333) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(= Classpat >>>> hPackageProvider.java:52) >>>> =C2=A0=C2=A0=C2=A0 at >>>> com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadConta= iner(D >>>> efaultConfiguration.java:206) >>>> =C2=A0=C2=A0=C2=A0 at >>>> com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration= (Con >>>> figurationManager.java:66) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.jav= a:957) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(D= ispatcher.j >>>> ava:463) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.struts2.dispatcher.Dispatcher.init(= Dispatcher.java:496) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOper= ations.java:7 >>>> 3) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.i= nit(StrutsPrep >>>> areAndExecuteFilter.java:61) >>>> =C2=A0=C2=A0=C2=A0 at >>>> eu.inform.servlet.context.URIExcludeFilter.init(URIExcludeFilter.jav= a:37) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ApplicationFilterConfig.initFilter(Applicat= ionFilterConfig >>>> .java:270) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ApplicationFilterConfig.getFilter(Applicati= onFilterConfig >>>> .java:251) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ApplicationFilterConfig.(ApplicationF= ilterConfig.ja >>>> va:102) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardContext.filterStart(StandardContext= =2Ejava:4491) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardContext.startInternal(StandardConte= xt.java:51 >>>> 35) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.util.LifecycleBase.start(L= ifecycleBase.java:183) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase= =2Ejava:1432 >>>> ) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase= =2Ejava:1422 >>>> ) >>>> =C2=A0=C2=A0=C2=A0 at java.base/java.util.concurrent.FutureTask.run(= FutureTask.java:264) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineE= xecutorServ >>>> ice.java:75) >>>> =C2=A0=C2=A0=C2=A0 at >>>> java.base/java.util.concurrent.AbstractExecutorService.submit(Abstra= ctExecutorS >>>> ervice.java:140) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.j= ava:944) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardHost.startInternal(StandardHost.jav= a:831) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.util.LifecycleBase.start(L= ifecycleBase.java:183) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase= =2Ejava:1432 >>>> ) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase= =2Ejava:1422 >>>> ) >>>> =C2=A0=C2=A0=C2=A0 at java.base/java.util.concurrent.FutureTask.run(= FutureTask.java:264) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineE= xecutorServ >>>> ice.java:75) >>>> =C2=A0=C2=A0=C2=A0 at >>>> java.base/java.util.concurrent.AbstractExecutorService.submit(Abstra= ctExecutorS >>>> ervice.java:140) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.j= ava:944) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardEngine.startInternal(StandardEngine= =2Ejava:261) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.util.LifecycleBase.start(L= ifecycleBase.java:183) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardService.startInternal(StandardServi= ce.java:422) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.util.LifecycleBase.start(L= ifecycleBase.java:183) >>>> =C2=A0=C2=A0=C2=A0 at >>>> org.apache.catalina.core.StandardServer.startInternal(StandardServer= =2Ejava:801) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.util.LifecycleBase.start(L= ifecycleBase.java:183) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.startup.Catalina.start(Cat= alina.java:695) >>>> =C2=A0=C2=A0=C2=A0 at >>>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Nati= ve >>>> Method) >>>> =C2=A0=C2=A0=C2=A0 at >>>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Nativ= eMethodA >>>> ccessorImpl.java:62) >>>> =C2=A0=C2=A0=C2=A0 at >>>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(D= elegating >>>> MethodAccessorImpl.java:43) >>>> =C2=A0=C2=A0=C2=A0 at java.base/java.lang.reflect.Method.invoke(Meth= od.java:566) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.startup.Bootstrap.start(Bo= otstrap.java:350) >>>> =C2=A0=C2=A0=C2=A0 at org.apache.catalina.startup.Bootstrap.main(Boo= tstrap.java:492) >>>> >>>> Can someone verfiy that and propose a fix? >>>> >>> Hi Sebastian, >>> >>> Thank you very much for your explores share! >>> >>> Yes you're right. It seems we should upgrade to ASM7 in 2.5.21 also i= f it passed all tests as well. And sorry for these troubles above! We mis= sed those because we run our integration tests in struts showcase app onl= y on JDK8 and only with target java 7 (as you discovered). >>> >>> Could you please check if any further issue persists with my followin= g solution (beside your workaround for drop-in ASM7 dependency)? I think = "This feature requires ASM7" will vanished with it but I'm not comprehens= ively sure if any further issue arises after. If so, it would be nice to = fix them in 2.5.21 as well (beside asm.version=3D7.0). >>> >>> The solution (with thanks to Struts awesome design) :) : >>> 1. Copy org.apache.struts2.convention.DefaultClassFinder and paste to= your.app.target.package.ASM7DefaultClassFinder. >>> 2. Replace all Opcodes.ASM5 with Opcodes.ASM7 in your.app.target.pack= age.ASM7DefaultClassFinder. >>> 3. Define the new class your.app.target.package.ASM7ClassFinderFactor= y as below: >>> import com.opensymphony.xwork2.util.finder.ClassFinder; >>> import com.opensymphony.xwork2.util.finder.ClassFinderFactory; >>> import com.opensymphony.xwork2.util.finder.ClassLoaderInterface; >>> import com.opensymphony.xwork2.util.finder.Test;=20 >>> public class ASM7ClassFinderFactory implements ClassFinderFactory { >>> public ClassFinder buildClassFinder(ClassLoaderInterface classLoa= derInterface, Collection urls, boolean extractBaseInterfaces, Set protoco= ls, Test classNameFilter) { >>> return new ASM7DefaultClassFinder(classLoaderInterface, urls,= extractBaseInterfaces, protocols, classNameFilter); >>> } >>> } >>> 4. Register it in your struts.xml as below: >>> >>> >>> Thanks in advance! >>> >>> Kind Regards. >>> >>> ---------------------------------------------------------------------= >>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org >>> For additional commands, e-mail: user-help@struts.apache.org > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-unsubscribe@struts.apache.org > For additional commands, e-mail: user-help@struts.apache.org --=20 Mit freundlichen Gr=C3=BC=C3=9Fen Sebastian G=C3=B6tz iNFORM Technology GmbH Niederlassung Albstadt Berliner Stra=C3=9Fe 24 72458 Albstadt-Ebingen Tel: +49 7431 9816090 Fax: +49 7431 9816092 s.goetz@inform-technology.de PGP-Fingerabdruck: 8B0F A27C 16E2 1EFA 1323 997F 038A 001A A597 F613 http://www.inform-technology.de/ ***************************************************** Zentrale Stockach: Bodenseeallee 18 D-78333 Stockach Tel: +49 7771 9282 494 ***************************************************** Gesch=C3=A4ftsf=C3=BChrer: Dipl.-Ing. (FH) Heinz Roth | Handelsregister: = HRB 715948, Amtsgericht Freiburg | USt-ID Nr.: DE312290945 Diese E-Mail enth=C3=A4lt vertrauliche und/oder rechtlich gesch=C3=BCtzte= Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrt=C3=BCmlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist nicht gestattet. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden. --------------991DCD8B7898952F7EA89831--