struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sebastian Götz <s.go...@inform-technology.de>
Subject Re: Java 11 support
Date Thu, 17 Jan 2019 13:11:05 GMT
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 sources 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:

  java.lang.IllegalArgumentException
     at org.objectweb.asm.ClassReader.<init>(Unknown Source)
     at org.objectweb.asm.ClassReader.<init>(Unknown Source)
     at org.objectweb.asm.ClassReader.<init>(Unknown Source)
     at 
org.apache.struts2.convention.DefaultClassFinder.readClassDef(DefaultClassFinder.java:461)
     at 
org.apache.struts2.convention.DefaultClassFinder.<init>(DefaultClassFinder.java:93)
     at 
org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildClassFinder(PackageBasedActionConfigBuilder.java:395)
     at 
org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:377)
     at 
org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:333)
     at 
org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:52)
     at 
com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:206)
     at 
com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
     at 
org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:957)
     at 
org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:463)
     at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:496)
     at 
org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:73)
     at 
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:61)
     at 
eu.inform.servlet.context.URIExcludeFilter.init(URIExcludeFilter.java:37)
     at 
org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:270)
     at 
org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:251)
     at 
org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:102)
     at 
org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4491)
     at 
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5135)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
     at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
     at 
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
     at 
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
     at 
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
     at 
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
     at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
     at 
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
     at 
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
     at 
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
     at 
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at 
org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at 
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:801)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at org.apache.catalina.startup.Catalina.start(Catalina.java:695)
     at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method)
     at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)

I tried to exclude asm 5.2 on favor of 7.0 which works from the 
dependency resolving side. But the Struts2 ClassVisitor implementation 
is tied to ASM 5:

public class InfoBuildingVisitor extends ClassVisitor {
         private Info info;
         private ClassFinder classFinder;

         public InfoBuildingVisitor(ClassFinder classFinder) {
             super(Opcodes.ASM5);
             this.classFinder = classFinder;
         }
...
}

Therefore this leads to the following problem:

java.lang.UnsupportedOperationException: This feature requires ASM7
     at 
org.objectweb.asm.ClassVisitor.visitNestMember(ClassVisitor.java:236)
     at org.objectweb.asm.ClassReader.accept(ClassReader.java:651)
     at org.objectweb.asm.ClassReader.accept(ClassReader.java:391)
     at 
org.apache.struts2.convention.DefaultClassFinder.readClassDef(DefaultClassFinder.java:462)
     at 
org.apache.struts2.convention.DefaultClassFinder.<init>(DefaultClassFinder.java:93)
     at 
org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildClassFinder(PackageBasedActionConfigBuilder.java:395)
     at 
org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:377)
     at 
org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:333)
     at 
org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:52)
     at 
com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:206)
     at 
com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
     at 
org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:957)
     at 
org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:463)
     at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:496)
     at 
org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:73)
     at 
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:61)
     at 
eu.inform.servlet.context.URIExcludeFilter.init(URIExcludeFilter.java:37)
     at 
org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:270)
     at 
org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:251)
     at 
org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:102)
     at 
org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4491)
     at 
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5135)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
     at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
     at 
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
     at 
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
     at 
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
     at 
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1432)
     at 
org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1422)
     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
     at 
org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
     at 
java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
     at 
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:944)
     at 
org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:261)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at 
org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at 
org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:801)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at org.apache.catalina.startup.Catalina.start(Catalina.java:695)
     at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method)
     at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)

Can someone verfiy that and propose a fix?

Kind regards,

Sebastian


Am 15.01.2019 um 09:45 schrieb Sebastian Götz:
> Great to hear that!
>
>
> Am 15.01.2019 um 09:37 schrieb Yasser Zamani:
>> Hi Sebastian,
>>
>> Yes the release will be ready this month hopefully this week already ☺
>>
>> Kind Regards.
>>
>>
>> From: Sebastian Götz<s.goetz@inform-technology.de>
>> Sent: Tuesday, January 15, 2019 10:51 AM
>> To: Yasser Zamani<yasserzamani@apache.org>
>> Subject: Re: Java 11 support
>>
>> Hi Yasser,
>>
>> sure! We are not in a hurry :-) but really looking forward to this release. I tried
with the 2.5.18 yesterday.
>> But then I will await the 2.5.20 release with pleasure.
>>
>> I know this sort of question sucks but will the release be ready this month already
or will it take somewhat longer.
>>
>> Kind regards,
>>
>> Sebastian
>> Am 14.01.2019 um 19:06 schrieb Yasser Zamani:
>>
>> Hi Sebastian,
>>
>>
>>
>> I'm pleased to announce it seems we were able to add both java 9 and 11
>>
>> supports into Struts 2.5.20. Could you please wait a few days for its
>>
>> release and then test the bits? It currently can pass all tests with all
>>
>> jdks (see [1]) but it's so great if you will be able to test it in
>>
>> production also.
>>
>>
>>
>> Thanks for using Struts!
>>
>>
>>
>> Kind Regards.
>>
>>
>>
>> [1]https://travis-ci.org/apache/struts/builds/456910100
>>
>>
>>
>>
>>
>> On 1/14/2019 11:13 AM, Sebastian Götz wrote:
>>
>> Hello all.
>>
>>
>>
>> I searched through the website and the issue tracker to find any roadmap
>>
>> info concerning Java 11 support.
>>
>> At the moment I try upgrading our webapp to Tomcat 9 with OpenJDK 11. I
>>
>> now from past upgrades that we had to use a Java8-support-plugin for a
>>
>> while.
>>
>> Now with JDK 11 it looks a bit more complex getting the Java 9 module
>>
>> stuff together correctly. But I think someone must have a plan for this
>>
>> migration.
>>
>>
>>
>> So the question is: how and when is it going to be possible to use
>>
>> struts2 with Java 11?
>>
>>
>>
>> Kind regards
>>
>>
>>
>> Sebastian Götz
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>>
>> To unsubscribe, e-mail:user-unsubscribe@struts.apache.org<mailto:user-unsubscribe@struts.apache.org>
>>
>> For additional commands, e-mail:user-help@struts.apache.org<mailto:user-help@struts.apache.org>
>>
>> --
>> Mit freundlichen Grüßen
>>
>> Sebastian Götz
>>
>> iNFORM Technology GmbH
>> Niederlassung Albstadt
>> Berliner Straße 24
>> 72458 Albstadt-Ebingen
>>
>> Tel: +49 7431 9816090
>> Fax: +49 7431 9816092
>> s.goetz@inform-technology.de<mailto:s.goetz@inform-technology.de>
>> http://www.inform-technology.de/
>>
>> *****************************************************
>>
>> Zentrale Stockach:
>> Bodenseeallee 18
>> D-78333 Stockach
>> Tel: +49 7771 9282 494
>>
>> *****************************************************
>>
>> Geschäftsführer: Dipl.-Ing. (FH) Heinz Roth | Handelsregister: HRB 715948, Amtsgericht
Freiburg | USt-ID Nr.: DE312290945
>>
>> Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen.
Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich 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.
>
> -- 
> Mit freundlichen Grüßen
>
> Sebastian Götz
>
> iNFORM Technology GmbH
> Niederlassung Albstadt
> Berliner Straße 24
> 72458 Albstadt-Ebingen
>
> Tel: +49 7431 9816090
> Fax: +49 7431 9816092
> s.goetz@inform-technology.de <mailto:s.goetz@inform-technology.de>
> http://www.inform-technology.de/
>
> *****************************************************
>
> Zentrale Stockach:
> Bodenseeallee 18
> D-78333 Stockach
> Tel: +49 7771 9282 494
>
> *****************************************************
>
> Geschäftsführer: Dipl.-Ing. (FH) Heinz Roth | Handelsregister: HRB 
> 715948, Amtsgericht Freiburg | USt-ID Nr.: DE312290945
>
> Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte 
> Informationen. Wenn Sie nicht der richtige Adressat sind oder diese 
> E-Mail irrtümlich 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.

-- 
Mit freundlichen Grüßen

Sebastian Götz

iNFORM Technology GmbH
Niederlassung Albstadt
Berliner Straße 24
72458 Albstadt-Ebingen

Tel: +49 7431 9816090
Fax: +49 7431 9816092
s.goetz@inform-technology.de <mailto:s.goetz@inform-technology.de>
http://www.inform-technology.de/

*****************************************************

Zentrale Stockach:
Bodenseeallee 18
D-78333 Stockach
Tel: +49 7771 9282 494

*****************************************************

Geschäftsführer: Dipl.-Ing. (FH) Heinz Roth | Handelsregister: HRB 
715948, Amtsgericht Freiburg | USt-ID Nr.: DE312290945

Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte 
Informationen. Wenn Sie nicht der richtige Adressat sind oder diese 
E-Mail irrtümlich 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.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message