Current Javassist incompatible with Java 8

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Current Javassist incompatible with Java 8

Kalle Korhonen-2
Just a heads up for anybody venturing to try running Tapestry 5 webapp on
JRE8. Looks like the latest Javassist is incompatible, I'm getting a stack
trace copied below on advised classes. Looks like a straight-up issue with
Javassist. I didn't find any relevant bug open but I'll follow up with
them. Let me know if anybody has more info.

Kalle

Caused by: java.lang.RuntimeException: java.io.IOException: invalid
constant type: 15
        at javassist.CtClassType.getClassFile2(CtClassType.java:203)
        at javassist.CtClassType.subtypeOf(CtClassType.java:303)
        at javassist.CtClassType.subtypeOf(CtClassType.java:318)
        at
javassist.compiler.MemberResolver.compareSignature(MemberResolver.java:247)
        at
javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:119)
        at
javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:96)
        at
javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:704)
        at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
        at
javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
        at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
        at
javassist.compiler.JvstTypeChecker.atCastToRtype(JvstTypeChecker.java:112)
        at
javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:93)
        at javassist.compiler.ast.CastExpr.accept(CastExpr.java:54)
        at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
        at javassist.compiler.CodeGen.compileExpr(CodeGen.java:228)
        at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:597)
        at
javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
        at javassist.compiler.CodeGen.atStmnt(CodeGen.java:362)
        at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
        at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:291)
        at javassist.compiler.Javac.compileBody(Javac.java:222)
        at javassist.CtBehavior.setBody(CtBehavior.java:401)
        at javassist.CtBehavior.setBody(CtBehavior.java:375)
        at
org.apache.tapestry5.ioc.internal.services.ClassFabImpl.addMethod(ClassFabImpl.java:226)
        ... 176 more
Caused by: java.io.IOException: invalid constant type: 15
        at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
        at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
        at javassist.bytecode.ConstPool.<init>(ConstPool.java:149)
        at javassist.bytecode.ClassFile.read(ClassFile.java:737)
        at javassist.bytecode.ClassFile.<init>(ClassFile.java:108)
        at javassist.CtClassType.getClassFile2(CtClassType.java:190)
        ... 199 more
Reply | Threaded
Open this post in threaded view
|

Re: Current Javassist incompatible with Java 8

Howard Lewis Ship
That's a problem; any idea if the ASM code inside Plastic (for Tapestry
5.3+) works on JDK 8?

Javassist is 100% gone in 5.4.

I've seen some troubling discussions about bytecode changes in JDK 8 that
are going to cause a lot of havoc.


On Thu, Sep 19, 2013 at 11:12 AM, Kalle Korhonen <[hidden email]
> wrote:

> Just a heads up for anybody venturing to try running Tapestry 5 webapp on
> JRE8. Looks like the latest Javassist is incompatible, I'm getting a stack
> trace copied below on advised classes. Looks like a straight-up issue with
> Javassist. I didn't find any relevant bug open but I'll follow up with
> them. Let me know if anybody has more info.
>
> Kalle
>
> Caused by: java.lang.RuntimeException: java.io.IOException: invalid
> constant type: 15
>         at javassist.CtClassType.getClassFile2(CtClassType.java:203)
>         at javassist.CtClassType.subtypeOf(CtClassType.java:303)
>         at javassist.CtClassType.subtypeOf(CtClassType.java:318)
>         at
> javassist.compiler.MemberResolver.compareSignature(MemberResolver.java:247)
>         at
> javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:119)
>         at
> javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:96)
>         at
> javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:704)
>         at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
>         at
> javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
>         at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
>         at
> javassist.compiler.JvstTypeChecker.atCastToRtype(JvstTypeChecker.java:112)
>         at
> javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:93)
>         at javassist.compiler.ast.CastExpr.accept(CastExpr.java:54)
>         at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
>         at javassist.compiler.CodeGen.compileExpr(CodeGen.java:228)
>         at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:597)
>         at
> javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
>         at javassist.compiler.CodeGen.atStmnt(CodeGen.java:362)
>         at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
>         at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:291)
>         at javassist.compiler.Javac.compileBody(Javac.java:222)
>         at javassist.CtBehavior.setBody(CtBehavior.java:401)
>         at javassist.CtBehavior.setBody(CtBehavior.java:375)
>         at
>
> org.apache.tapestry5.ioc.internal.services.ClassFabImpl.addMethod(ClassFabImpl.java:226)
>         ... 176 more
> Caused by: java.io.IOException: invalid constant type: 15
>         at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
>         at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
>         at javassist.bytecode.ConstPool.<init>(ConstPool.java:149)
>         at javassist.bytecode.ClassFile.read(ClassFile.java:737)
>         at javassist.bytecode.ClassFile.<init>(ClassFile.java:108)
>         at javassist.CtClassType.getClassFile2(CtClassType.java:190)
>         ... 199 more
>



--
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com
Reply | Threaded
Open this post in threaded view
|

Re: Current Javassist incompatible with Java 8

Kalle Korhonen-2
On Thu, Sep 19, 2013 at 11:18 AM, Howard Lewis Ship <[hidden email]>wrote:

> That's a problem; any idea if the ASM code inside Plastic (for Tapestry
> 5.3+) works on JDK 8?
> Javassist is 100% gone in 5.4.
>

Not yet but I'll try that out.

Kalle


>
> I've seen some troubling discussions about bytecode changes in JDK 8 that
> are going to cause a lot of havoc.
>
>
> On Thu, Sep 19, 2013 at 11:12 AM, Kalle Korhonen <
> [hidden email]
> > wrote:
>
> > Just a heads up for anybody venturing to try running Tapestry 5 webapp on
> > JRE8. Looks like the latest Javassist is incompatible, I'm getting a
> stack
> > trace copied below on advised classes. Looks like a straight-up issue
> with
> > Javassist. I didn't find any relevant bug open but I'll follow up with
> > them. Let me know if anybody has more info.
> >
> > Kalle
> >
> > Caused by: java.lang.RuntimeException: java.io.IOException: invalid
> > constant type: 15
> >         at javassist.CtClassType.getClassFile2(CtClassType.java:203)
> >         at javassist.CtClassType.subtypeOf(CtClassType.java:303)
> >         at javassist.CtClassType.subtypeOf(CtClassType.java:318)
> >         at
> >
> javassist.compiler.MemberResolver.compareSignature(MemberResolver.java:247)
> >         at
> > javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:119)
> >         at
> > javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:96)
> >         at
> > javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:704)
> >         at
> javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
> >         at
> > javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
> >         at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
> >         at
> >
> javassist.compiler.JvstTypeChecker.atCastToRtype(JvstTypeChecker.java:112)
> >         at
> > javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:93)
> >         at javassist.compiler.ast.CastExpr.accept(CastExpr.java:54)
> >         at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
> >         at javassist.compiler.CodeGen.compileExpr(CodeGen.java:228)
> >         at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:597)
> >         at
> > javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
> >         at javassist.compiler.CodeGen.atStmnt(CodeGen.java:362)
> >         at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
> >         at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:291)
> >         at javassist.compiler.Javac.compileBody(Javac.java:222)
> >         at javassist.CtBehavior.setBody(CtBehavior.java:401)
> >         at javassist.CtBehavior.setBody(CtBehavior.java:375)
> >         at
> >
> >
> org.apache.tapestry5.ioc.internal.services.ClassFabImpl.addMethod(ClassFabImpl.java:226)
> >         ... 176 more
> > Caused by: java.io.IOException: invalid constant type: 15
> >         at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
> >         at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
> >         at javassist.bytecode.ConstPool.<init>(ConstPool.java:149)
> >         at javassist.bytecode.ClassFile.read(ClassFile.java:737)
> >         at javassist.bytecode.ClassFile.<init>(ClassFile.java:108)
> >         at javassist.CtClassType.getClassFile2(CtClassType.java:190)
> >         ... 199 more
> >
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>
Reply | Threaded
Open this post in threaded view
|

Re: Current Javassist incompatible with Java 8

Massimo Lusetti
On Thu, Sep 19, 2013 at 8:30 PM, Kalle Korhonen
<[hidden email]>wrote:

On Thu, Sep 19, 2013 at 11:18 AM, Howard Lewis Ship <[hidden email]>wrote:
>
> > That's a problem; any idea if the ASM code inside Plastic (for Tapestry
> > 5.3+) works on JDK 8?
> > Javassist is 100% gone in 5.4.
> >
>
> Not yet but I'll try that out.
>
>
Beware, javassist is gone if you don't bring in tapestry-hibernate.

Cheers
--
Massimo Lusetti
Reply | Threaded
Open this post in threaded view
|

Re: Current Javassist incompatible with Java 8

Kalle Korhonen-2
In reply to this post by Kalle Korhonen-2
Unfortunately it doesn't quite seem to work with ASM either, although this
sounds like easier to fix. Here's the stack trace for a Trivial Tapestry
app using 5.3.7 on Java 8:

SEVERE: Exception starting filter Tapestry
org.apache.tapestry5.ioc.internal.OperationException: Error building
service proxy for service 'RegistryStartup' (at
org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List)
(at RegistryStartup.java:36) via
org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
TapestryIOCModule.java:49)): java.lang.IllegalArgumentException
        at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
        at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
        at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
        at
org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl.create(ModuleImpl.java:332)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl.access$100(ModuleImpl.java:39)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl$1.invoke(ModuleImpl.java:191)
        at
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withWrite(ConcurrentBarrier.java:140)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl$2.invoke(ModuleImpl.java:207)
        at
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl.findOrCreate(ModuleImpl.java:213)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl.getService(ModuleImpl.java:109)
        at
org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:421)
        at
org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:325)
        at
org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80)
        at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:118)
        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.<init>(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.addChildInternal(ContainerBase.java:901)
        at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
        at
org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
        at
org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown
Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: Error building service proxy for
service 'RegistryStartup' (at
org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List)
(at RegistryStartup.java:36) via
org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
TapestryIOCModule.java:49)): java.lang.IllegalArgumentException
        at
org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:327)
        at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
        ... 30 more
Caused by: java.lang.IllegalArgumentException
        at
org.apache.tapestry5.internal.plastic.asm.ClassReader.<init>(ClassReader.java:167)
        at
org.apache.tapestry5.internal.plastic.asm.ClassReader.<init>(ClassReader.java:153)
        at
org.apache.tapestry5.internal.plastic.PlasticInternalUtils.convertBytecodeToClassNode(PlasticInternalUtils.java:436)
        at
org.apache.tapestry5.internal.plastic.PlasticClassPool.constructClassNodeFromBytecode(PlasticClassPool.java:481)
        at
org.apache.tapestry5.internal.plastic.PlasticClassPool$1.convert(PlasticClassPool.java:62)
        at
org.apache.tapestry5.internal.plastic.PlasticClassPool$1.convert(PlasticClassPool.java:59)
        at org.apache.tapestry5.internal.plastic.Cache.get(Cache.java:37)
        at
org.apache.tapestry5.internal.plastic.PlasticClassPool.getTypeCategory(PlasticClassPool.java:562)
        at
org.apache.tapestry5.internal.plastic.PlasticMethodImpl.invokeDelegateAndReturnResult(PlasticMethodImpl.java:363)
        at
org.apache.tapestry5.internal.plastic.PlasticMethodImpl.access$000(PlasticMethodImpl.java:24)
        at
org.apache.tapestry5.internal.plastic.PlasticMethodImpl$2.doBuild(PlasticMethodImpl.java:221)
        at
org.apache.tapestry5.internal.plastic.InstructionBuilderImpl.doCallback(InstructionBuilderImpl.java:832)
        at
org.apache.tapestry5.internal.plastic.PlasticMethodImpl.changeImplementation(PlasticMethodImpl.java:130)
        at
org.apache.tapestry5.internal.plastic.PlasticMethodImpl.delegateTo(PlasticMethodImpl.java:203)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl$9.transform(ModuleImpl.java:494)
        at
org.apache.tapestry5.plastic.PlasticManager.createProxy(PlasticManager.java:235)
        at
org.apache.tapestry5.ioc.internal.services.PlasticProxyFactoryImpl.createProxy(PlasticProxyFactoryImpl.java:64)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl.createProxyInstance(ModuleImpl.java:465)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl.createProxy(ModuleImpl.java:459)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl.access$900(ModuleImpl.java:39)
        at
org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:311)
        ... 31 more

Kalle




On Thu, Sep 19, 2013 at 11:30 AM, Kalle Korhonen <[hidden email]
> wrote:

> On Thu, Sep 19, 2013 at 11:18 AM, Howard Lewis Ship <[hidden email]>wrote:
>
>> That's a problem; any idea if the ASM code inside Plastic (for Tapestry
>> 5.3+) works on JDK 8?
>> Javassist is 100% gone in 5.4.
>>
>
> Not yet but I'll try that out.
>
> Kalle
>
>
>>
>> I've seen some troubling discussions about bytecode changes in JDK 8 that
>> are going to cause a lot of havoc.
>>
>>
>> On Thu, Sep 19, 2013 at 11:12 AM, Kalle Korhonen <
>> [hidden email]
>> > wrote:
>>
>> > Just a heads up for anybody venturing to try running Tapestry 5 webapp
>> on
>> > JRE8. Looks like the latest Javassist is incompatible, I'm getting a
>> stack
>> > trace copied below on advised classes. Looks like a straight-up issue
>> with
>> > Javassist. I didn't find any relevant bug open but I'll follow up with
>> > them. Let me know if anybody has more info.
>> >
>> > Kalle
>> >
>> > Caused by: java.lang.RuntimeException: java.io.IOException: invalid
>> > constant type: 15
>> >         at javassist.CtClassType.getClassFile2(CtClassType.java:203)
>> >         at javassist.CtClassType.subtypeOf(CtClassType.java:303)
>> >         at javassist.CtClassType.subtypeOf(CtClassType.java:318)
>> >         at
>> >
>> javassist.compiler.MemberResolver.compareSignature(MemberResolver.java:247)
>> >         at
>> > javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:119)
>> >         at
>> > javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:96)
>> >         at
>> > javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:704)
>> >         at
>> javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
>> >         at
>> > javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
>> >         at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
>> >         at
>> >
>> javassist.compiler.JvstTypeChecker.atCastToRtype(JvstTypeChecker.java:112)
>> >         at
>> > javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:93)
>> >         at javassist.compiler.ast.CastExpr.accept(CastExpr.java:54)
>> >         at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
>> >         at javassist.compiler.CodeGen.compileExpr(CodeGen.java:228)
>> >         at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:597)
>> >         at
>> > javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
>> >         at javassist.compiler.CodeGen.atStmnt(CodeGen.java:362)
>> >         at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
>> >         at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:291)
>> >         at javassist.compiler.Javac.compileBody(Javac.java:222)
>> >         at javassist.CtBehavior.setBody(CtBehavior.java:401)
>> >         at javassist.CtBehavior.setBody(CtBehavior.java:375)
>> >         at
>> >
>> >
>> org.apache.tapestry5.ioc.internal.services.ClassFabImpl.addMethod(ClassFabImpl.java:226)
>> >         ... 176 more
>> > Caused by: java.io.IOException: invalid constant type: 15
>> >         at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
>> >         at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
>> >         at javassist.bytecode.ConstPool.<init>(ConstPool.java:149)
>> >         at javassist.bytecode.ClassFile.read(ClassFile.java:737)
>> >         at javassist.bytecode.ClassFile.<init>(ClassFile.java:108)
>> >         at javassist.CtClassType.getClassFile2(CtClassType.java:190)
>> >         ... 199 more
>> >
>>
>>
>>
>> --
>> Howard M. Lewis Ship
>>
>> Creator of Apache Tapestry
>>
>> The source for Tapestry training, mentoring and support. Contact me to
>> learn how I can get you up and productive in Tapestry fast!
>>
>> (971) 678-5210
>> http://howardlewisship.com
>>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: Current Javassist incompatible with Java 8

Kalle Korhonen-2
Just to close the loop - at least regarding plastic & T5.4 - ASM5 is needed
together with Java 8. There's a month old alpha release available at
http://central.maven.org/maven2/org/ow2/asm/asm/5.0_ALPHA/. More
information at http://old.nabble.com/Java-8-Support--td34970003.html.

Kalle


On Sun, Sep 22, 2013 at 10:21 PM, Kalle Korhonen <[hidden email]
> wrote:

> Unfortunately it doesn't quite seem to work with ASM either, although this
> sounds like easier to fix. Here's the stack trace for a Trivial Tapestry
> app using 5.3.7 on Java 8:
>
> SEVERE: Exception starting filter Tapestry
> org.apache.tapestry5.ioc.internal.OperationException: Error building
> service proxy for service 'RegistryStartup' (at
> org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List)
> (at RegistryStartup.java:36) via
> org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
> TapestryIOCModule.java:49)): java.lang.IllegalArgumentException
>         at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
>         at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
>         at
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
>         at
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl.create(ModuleImpl.java:332)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl.access$100(ModuleImpl.java:39)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl$1.invoke(ModuleImpl.java:191)
>         at
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withWrite(ConcurrentBarrier.java:140)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl$2.invoke(ModuleImpl.java:207)
>         at
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl.findOrCreate(ModuleImpl.java:213)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl.getService(ModuleImpl.java:109)
>         at
> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:421)
>         at
> org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:325)
>         at
> org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80)
>         at
> org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:118)
>         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.<init>(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.addChildInternal(ContainerBase.java:901)
>         at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
>         at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
>         at
> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
>         at
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Unknown
> Source)
>         at java.util.concurrent.FutureTask.run(Unknown Source)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
> Source)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
> Source)
>         at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.RuntimeException: Error building service proxy for
> service 'RegistryStartup' (at
> org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List)
> (at RegistryStartup.java:36) via
> org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at
> TapestryIOCModule.java:49)): java.lang.IllegalArgumentException
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:327)
>         at
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
>         ... 30 more
> Caused by: java.lang.IllegalArgumentException
>         at
> org.apache.tapestry5.internal.plastic.asm.ClassReader.<init>(ClassReader.java:167)
>         at
> org.apache.tapestry5.internal.plastic.asm.ClassReader.<init>(ClassReader.java:153)
>         at
> org.apache.tapestry5.internal.plastic.PlasticInternalUtils.convertBytecodeToClassNode(PlasticInternalUtils.java:436)
>         at
> org.apache.tapestry5.internal.plastic.PlasticClassPool.constructClassNodeFromBytecode(PlasticClassPool.java:481)
>         at
> org.apache.tapestry5.internal.plastic.PlasticClassPool$1.convert(PlasticClassPool.java:62)
>         at
> org.apache.tapestry5.internal.plastic.PlasticClassPool$1.convert(PlasticClassPool.java:59)
>         at org.apache.tapestry5.internal.plastic.Cache.get(Cache.java:37)
>         at
> org.apache.tapestry5.internal.plastic.PlasticClassPool.getTypeCategory(PlasticClassPool.java:562)
>         at
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.invokeDelegateAndReturnResult(PlasticMethodImpl.java:363)
>         at
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.access$000(PlasticMethodImpl.java:24)
>         at
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl$2.doBuild(PlasticMethodImpl.java:221)
>         at
> org.apache.tapestry5.internal.plastic.InstructionBuilderImpl.doCallback(InstructionBuilderImpl.java:832)
>         at
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.changeImplementation(PlasticMethodImpl.java:130)
>         at
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.delegateTo(PlasticMethodImpl.java:203)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl$9.transform(ModuleImpl.java:494)
>         at
> org.apache.tapestry5.plastic.PlasticManager.createProxy(PlasticManager.java:235)
>         at
> org.apache.tapestry5.ioc.internal.services.PlasticProxyFactoryImpl.createProxy(PlasticProxyFactoryImpl.java:64)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxyInstance(ModuleImpl.java:465)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxy(ModuleImpl.java:459)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl.access$900(ModuleImpl.java:39)
>         at
> org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:311)
>         ... 31 more
>
> Kalle
>
>
>
>
> On Thu, Sep 19, 2013 at 11:30 AM, Kalle Korhonen <
> [hidden email]> wrote:
>
>> On Thu, Sep 19, 2013 at 11:18 AM, Howard Lewis Ship <[hidden email]>wrote:
>>
>>> That's a problem; any idea if the ASM code inside Plastic (for Tapestry
>>> 5.3+) works on JDK 8?
>>> Javassist is 100% gone in 5.4.
>>>
>>
>> Not yet but I'll try that out.
>>
>> Kalle
>>
>>
>>>
>>> I've seen some troubling discussions about bytecode changes in JDK 8 that
>>> are going to cause a lot of havoc.
>>>
>>>
>>> On Thu, Sep 19, 2013 at 11:12 AM, Kalle Korhonen <
>>> [hidden email]
>>> > wrote:
>>>
>>> > Just a heads up for anybody venturing to try running Tapestry 5 webapp
>>> on
>>> > JRE8. Looks like the latest Javassist is incompatible, I'm getting a
>>> stack
>>> > trace copied below on advised classes. Looks like a straight-up issue
>>> with
>>> > Javassist. I didn't find any relevant bug open but I'll follow up with
>>> > them. Let me know if anybody has more info.
>>> >
>>> > Kalle
>>> >
>>> > Caused by: java.lang.RuntimeException: java.io.IOException: invalid
>>> > constant type: 15
>>> >         at javassist.CtClassType.getClassFile2(CtClassType.java:203)
>>> >         at javassist.CtClassType.subtypeOf(CtClassType.java:303)
>>> >         at javassist.CtClassType.subtypeOf(CtClassType.java:318)
>>> >         at
>>> >
>>> javassist.compiler.MemberResolver.compareSignature(MemberResolver.java:247)
>>> >         at
>>> > javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:119)
>>> >         at
>>> > javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:96)
>>> >         at
>>> > javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:704)
>>> >         at
>>> javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
>>> >         at
>>> > javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
>>> >         at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
>>> >         at
>>> >
>>> javassist.compiler.JvstTypeChecker.atCastToRtype(JvstTypeChecker.java:112)
>>> >         at
>>> > javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:93)
>>> >         at javassist.compiler.ast.CastExpr.accept(CastExpr.java:54)
>>> >         at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
>>> >         at javassist.compiler.CodeGen.compileExpr(CodeGen.java:228)
>>> >         at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:597)
>>> >         at
>>> > javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
>>> >         at javassist.compiler.CodeGen.atStmnt(CodeGen.java:362)
>>> >         at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
>>> >         at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:291)
>>> >         at javassist.compiler.Javac.compileBody(Javac.java:222)
>>> >         at javassist.CtBehavior.setBody(CtBehavior.java:401)
>>> >         at javassist.CtBehavior.setBody(CtBehavior.java:375)
>>> >         at
>>> >
>>> >
>>> org.apache.tapestry5.ioc.internal.services.ClassFabImpl.addMethod(ClassFabImpl.java:226)
>>> >         ... 176 more
>>> > Caused by: java.io.IOException: invalid constant type: 15
>>> >         at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
>>> >         at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
>>> >         at javassist.bytecode.ConstPool.<init>(ConstPool.java:149)
>>> >         at javassist.bytecode.ClassFile.read(ClassFile.java:737)
>>> >         at javassist.bytecode.ClassFile.<init>(ClassFile.java:108)
>>> >         at javassist.CtClassType.getClassFile2(CtClassType.java:190)
>>> >         ... 199 more
>>> >
>>>
>>>
>>>
>>> --
>>> Howard M. Lewis Ship
>>>
>>> Creator of Apache Tapestry
>>>
>>> The source for Tapestry training, mentoring and support. Contact me to
>>> learn how I can get you up and productive in Tapestry fast!
>>>
>>> (971) 678-5210
>>> http://howardlewisship.com
>>>
>>
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: Current Javassist incompatible with Java 8

Howard Lewis Ship
This is likely something to be addressed in the 5.5 time frame?  When is
JDK 8 going to be released?


On Wed, Sep 25, 2013 at 11:42 AM, Kalle Korhonen <[hidden email]
> wrote:

> Just to close the loop - at least regarding plastic & T5.4 - ASM5 is needed
> together with Java 8. There's a month old alpha release available at
> http://central.maven.org/maven2/org/ow2/asm/asm/5.0_ALPHA/. More
> information at http://old.nabble.com/Java-8-Support--td34970003.html.
>
> Kalle
>
>
> On Sun, Sep 22, 2013 at 10:21 PM, Kalle Korhonen <
> [hidden email]
> > wrote:
>
> > Unfortunately it doesn't quite seem to work with ASM either, although
> this
> > sounds like easier to fix. Here's the stack trace for a Trivial Tapestry
> > app using 5.3.7 on Java 8:
> >
> > SEVERE: Exception starting filter Tapestry
> > org.apache.tapestry5.ioc.internal.OperationException: Error building
> > service proxy for service 'RegistryStartup' (at
> > org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List)
> > (at RegistryStartup.java:36) via
> > org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder)
> (at
> > TapestryIOCModule.java:49)): java.lang.IllegalArgumentException
> >         at
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
> >         at
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
> >         at
> >
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
> >         at
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
> >         at
> > org.apache.tapestry5.ioc.internal.ModuleImpl.create(ModuleImpl.java:332)
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.access$100(ModuleImpl.java:39)
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$1.invoke(ModuleImpl.java:191)
> >         at
> >
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withWrite(ConcurrentBarrier.java:140)
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$2.invoke(ModuleImpl.java:207)
> >         at
> >
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.findOrCreate(ModuleImpl.java:213)
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.getService(ModuleImpl.java:109)
> >         at
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:421)
> >         at
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:325)
> >         at
> >
> org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80)
> >         at
> > org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:118)
> >         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.<init>(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.addChildInternal(ContainerBase.java:901)
> >         at
> > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
> >         at
> > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
> >         at
> > org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
> >         at
> >
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
> >         at java.util.concurrent.Executors$RunnableAdapter.call(Unknown
> > Source)
> >         at java.util.concurrent.FutureTask.run(Unknown Source)
> >         at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
> > Source)
> >         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
> > Source)
> >         at java.lang.Thread.run(Unknown Source)
> > Caused by: java.lang.RuntimeException: Error building service proxy for
> > service 'RegistryStartup' (at
> > org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger, List)
> > (at RegistryStartup.java:36) via
> > org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder)
> (at
> > TapestryIOCModule.java:49)): java.lang.IllegalArgumentException
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:327)
> >         at
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
> >         ... 30 more
> > Caused by: java.lang.IllegalArgumentException
> >         at
> >
> org.apache.tapestry5.internal.plastic.asm.ClassReader.<init>(ClassReader.java:167)
> >         at
> >
> org.apache.tapestry5.internal.plastic.asm.ClassReader.<init>(ClassReader.java:153)
> >         at
> >
> org.apache.tapestry5.internal.plastic.PlasticInternalUtils.convertBytecodeToClassNode(PlasticInternalUtils.java:436)
> >         at
> >
> org.apache.tapestry5.internal.plastic.PlasticClassPool.constructClassNodeFromBytecode(PlasticClassPool.java:481)
> >         at
> >
> org.apache.tapestry5.internal.plastic.PlasticClassPool$1.convert(PlasticClassPool.java:62)
> >         at
> >
> org.apache.tapestry5.internal.plastic.PlasticClassPool$1.convert(PlasticClassPool.java:59)
> >         at org.apache.tapestry5.internal.plastic.Cache.get(Cache.java:37)
> >         at
> >
> org.apache.tapestry5.internal.plastic.PlasticClassPool.getTypeCategory(PlasticClassPool.java:562)
> >         at
> >
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.invokeDelegateAndReturnResult(PlasticMethodImpl.java:363)
> >         at
> >
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.access$000(PlasticMethodImpl.java:24)
> >         at
> >
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl$2.doBuild(PlasticMethodImpl.java:221)
> >         at
> >
> org.apache.tapestry5.internal.plastic.InstructionBuilderImpl.doCallback(InstructionBuilderImpl.java:832)
> >         at
> >
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.changeImplementation(PlasticMethodImpl.java:130)
> >         at
> >
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.delegateTo(PlasticMethodImpl.java:203)
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$9.transform(ModuleImpl.java:494)
> >         at
> >
> org.apache.tapestry5.plastic.PlasticManager.createProxy(PlasticManager.java:235)
> >         at
> >
> org.apache.tapestry5.ioc.internal.services.PlasticProxyFactoryImpl.createProxy(PlasticProxyFactoryImpl.java:64)
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxyInstance(ModuleImpl.java:465)
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxy(ModuleImpl.java:459)
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.access$900(ModuleImpl.java:39)
> >         at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:311)
> >         ... 31 more
> >
> > Kalle
> >
> >
> >
> >
> > On Thu, Sep 19, 2013 at 11:30 AM, Kalle Korhonen <
> > [hidden email]> wrote:
> >
> >> On Thu, Sep 19, 2013 at 11:18 AM, Howard Lewis Ship <[hidden email]
> >wrote:
> >>
> >>> That's a problem; any idea if the ASM code inside Plastic (for Tapestry
> >>> 5.3+) works on JDK 8?
> >>> Javassist is 100% gone in 5.4.
> >>>
> >>
> >> Not yet but I'll try that out.
> >>
> >> Kalle
> >>
> >>
> >>>
> >>> I've seen some troubling discussions about bytecode changes in JDK 8
> that
> >>> are going to cause a lot of havoc.
> >>>
> >>>
> >>> On Thu, Sep 19, 2013 at 11:12 AM, Kalle Korhonen <
> >>> [hidden email]
> >>> > wrote:
> >>>
> >>> > Just a heads up for anybody venturing to try running Tapestry 5
> webapp
> >>> on
> >>> > JRE8. Looks like the latest Javassist is incompatible, I'm getting a
> >>> stack
> >>> > trace copied below on advised classes. Looks like a straight-up issue
> >>> with
> >>> > Javassist. I didn't find any relevant bug open but I'll follow up
> with
> >>> > them. Let me know if anybody has more info.
> >>> >
> >>> > Kalle
> >>> >
> >>> > Caused by: java.lang.RuntimeException: java.io.IOException: invalid
> >>> > constant type: 15
> >>> >         at javassist.CtClassType.getClassFile2(CtClassType.java:203)
> >>> >         at javassist.CtClassType.subtypeOf(CtClassType.java:303)
> >>> >         at javassist.CtClassType.subtypeOf(CtClassType.java:318)
> >>> >         at
> >>> >
> >>>
> javassist.compiler.MemberResolver.compareSignature(MemberResolver.java:247)
> >>> >         at
> >>> >
> javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:119)
> >>> >         at
> >>> >
> javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:96)
> >>> >         at
> >>> > javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:704)
> >>> >         at
> >>> javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
> >>> >         at
> >>> >
> javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
> >>> >         at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
> >>> >         at
> >>> >
> >>>
> javassist.compiler.JvstTypeChecker.atCastToRtype(JvstTypeChecker.java:112)
> >>> >         at
> >>> >
> javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:93)
> >>> >         at javassist.compiler.ast.CastExpr.accept(CastExpr.java:54)
> >>> >         at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
> >>> >         at javassist.compiler.CodeGen.compileExpr(CodeGen.java:228)
> >>> >         at
> javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:597)
> >>> >         at
> >>> > javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
> >>> >         at javassist.compiler.CodeGen.atStmnt(CodeGen.java:362)
> >>> >         at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
> >>> >         at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:291)
> >>> >         at javassist.compiler.Javac.compileBody(Javac.java:222)
> >>> >         at javassist.CtBehavior.setBody(CtBehavior.java:401)
> >>> >         at javassist.CtBehavior.setBody(CtBehavior.java:375)
> >>> >         at
> >>> >
> >>> >
> >>>
> org.apache.tapestry5.ioc.internal.services.ClassFabImpl.addMethod(ClassFabImpl.java:226)
> >>> >         ... 176 more
> >>> > Caused by: java.io.IOException: invalid constant type: 15
> >>> >         at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
> >>> >         at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
> >>> >         at javassist.bytecode.ConstPool.<init>(ConstPool.java:149)
> >>> >         at javassist.bytecode.ClassFile.read(ClassFile.java:737)
> >>> >         at javassist.bytecode.ClassFile.<init>(ClassFile.java:108)
> >>> >         at javassist.CtClassType.getClassFile2(CtClassType.java:190)
> >>> >         ... 199 more
> >>> >
> >>>
> >>>
> >>>
> >>> --
> >>> Howard M. Lewis Ship
> >>>
> >>> Creator of Apache Tapestry
> >>>
> >>> The source for Tapestry training, mentoring and support. Contact me to
> >>> learn how I can get you up and productive in Tapestry fast!
> >>>
> >>> (971) 678-5210
> >>> http://howardlewisship.com
> >>>
> >>
> >>
> >
>



--
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com
Reply | Threaded
Open this post in threaded view
|

Re: Current Javassist incompatible with Java 8

Kalle Korhonen-2
GA in March 2014 for Java 8 (
http://openjdk.java.net/projects/jdk8/milestones). That schedule will
likely hold now that its feature complete.

Kalle


On Wed, Sep 25, 2013 at 11:45 AM, Howard Lewis Ship <[hidden email]>wrote:

> This is likely something to be addressed in the 5.5 time frame?  When is
> JDK 8 going to be released?
>
>
> On Wed, Sep 25, 2013 at 11:42 AM, Kalle Korhonen <
> [hidden email]
> > wrote:
>
> > Just to close the loop - at least regarding plastic & T5.4 - ASM5 is
> needed
> > together with Java 8. There's a month old alpha release available at
> > http://central.maven.org/maven2/org/ow2/asm/asm/5.0_ALPHA/. More
> > information at http://old.nabble.com/Java-8-Support--td34970003.html.
> >
> > Kalle
> >
> >
> > On Sun, Sep 22, 2013 at 10:21 PM, Kalle Korhonen <
> > [hidden email]
> > > wrote:
> >
> > > Unfortunately it doesn't quite seem to work with ASM either, although
> > this
> > > sounds like easier to fix. Here's the stack trace for a Trivial
> Tapestry
> > > app using 5.3.7 on Java 8:
> > >
> > > SEVERE: Exception starting filter Tapestry
> > > org.apache.tapestry5.ioc.internal.OperationException: Error building
> > > service proxy for service 'RegistryStartup' (at
> > > org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger,
> List)
> > > (at RegistryStartup.java:36) via
> > > org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder)
> > (at
> > > TapestryIOCModule.java:49)): java.lang.IllegalArgumentException
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:121)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:88)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:87)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1124)
> > >         at
> > >
> org.apache.tapestry5.ioc.internal.ModuleImpl.create(ModuleImpl.java:332)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.access$100(ModuleImpl.java:39)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$1.invoke(ModuleImpl.java:191)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withWrite(ConcurrentBarrier.java:140)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$2.invoke(ModuleImpl.java:207)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.findOrCreate(ModuleImpl.java:213)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.getService(ModuleImpl.java:109)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:421)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:325)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80)
> > >         at
> > > org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:118)
> > >         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.<init>(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.addChildInternal(ContainerBase.java:901)
> > >         at
> > > org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
> > >         at
> > > org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
> > >         at
> > > org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
> > >         at
> > >
> >
> org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
> > >         at java.util.concurrent.Executors$RunnableAdapter.call(Unknown
> > > Source)
> > >         at java.util.concurrent.FutureTask.run(Unknown Source)
> > >         at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
> > > Source)
> > >         at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
> > > Source)
> > >         at java.lang.Thread.run(Unknown Source)
> > > Caused by: java.lang.RuntimeException: Error building service proxy for
> > > service 'RegistryStartup' (at
> > > org.apache.tapestry5.ioc.internal.services.RegistryStartup(Logger,
> List)
> > > (at RegistryStartup.java:36) via
> > > org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder)
> > (at
> > > TapestryIOCModule.java:49)): java.lang.IllegalArgumentException
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:327)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:74)
> > >         ... 30 more
> > > Caused by: java.lang.IllegalArgumentException
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.asm.ClassReader.<init>(ClassReader.java:167)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.asm.ClassReader.<init>(ClassReader.java:153)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.PlasticInternalUtils.convertBytecodeToClassNode(PlasticInternalUtils.java:436)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.PlasticClassPool.constructClassNodeFromBytecode(PlasticClassPool.java:481)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.PlasticClassPool$1.convert(PlasticClassPool.java:62)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.PlasticClassPool$1.convert(PlasticClassPool.java:59)
> > >         at
> org.apache.tapestry5.internal.plastic.Cache.get(Cache.java:37)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.PlasticClassPool.getTypeCategory(PlasticClassPool.java:562)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.invokeDelegateAndReturnResult(PlasticMethodImpl.java:363)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.access$000(PlasticMethodImpl.java:24)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl$2.doBuild(PlasticMethodImpl.java:221)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.InstructionBuilderImpl.doCallback(InstructionBuilderImpl.java:832)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.changeImplementation(PlasticMethodImpl.java:130)
> > >         at
> > >
> >
> org.apache.tapestry5.internal.plastic.PlasticMethodImpl.delegateTo(PlasticMethodImpl.java:203)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$9.transform(ModuleImpl.java:494)
> > >         at
> > >
> >
> org.apache.tapestry5.plastic.PlasticManager.createProxy(PlasticManager.java:235)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.services.PlasticProxyFactoryImpl.createProxy(PlasticProxyFactoryImpl.java:64)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxyInstance(ModuleImpl.java:465)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxy(ModuleImpl.java:459)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.access$900(ModuleImpl.java:39)
> > >         at
> > >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:311)
> > >         ... 31 more
> > >
> > > Kalle
> > >
> > >
> > >
> > >
> > > On Thu, Sep 19, 2013 at 11:30 AM, Kalle Korhonen <
> > > [hidden email]> wrote:
> > >
> > >> On Thu, Sep 19, 2013 at 11:18 AM, Howard Lewis Ship <[hidden email]
> > >wrote:
> > >>
> > >>> That's a problem; any idea if the ASM code inside Plastic (for
> Tapestry
> > >>> 5.3+) works on JDK 8?
> > >>> Javassist is 100% gone in 5.4.
> > >>>
> > >>
> > >> Not yet but I'll try that out.
> > >>
> > >> Kalle
> > >>
> > >>
> > >>>
> > >>> I've seen some troubling discussions about bytecode changes in JDK 8
> > that
> > >>> are going to cause a lot of havoc.
> > >>>
> > >>>
> > >>> On Thu, Sep 19, 2013 at 11:12 AM, Kalle Korhonen <
> > >>> [hidden email]
> > >>> > wrote:
> > >>>
> > >>> > Just a heads up for anybody venturing to try running Tapestry 5
> > webapp
> > >>> on
> > >>> > JRE8. Looks like the latest Javassist is incompatible, I'm getting
> a
> > >>> stack
> > >>> > trace copied below on advised classes. Looks like a straight-up
> issue
> > >>> with
> > >>> > Javassist. I didn't find any relevant bug open but I'll follow up
> > with
> > >>> > them. Let me know if anybody has more info.
> > >>> >
> > >>> > Kalle
> > >>> >
> > >>> > Caused by: java.lang.RuntimeException: java.io.IOException: invalid
> > >>> > constant type: 15
> > >>> >         at
> javassist.CtClassType.getClassFile2(CtClassType.java:203)
> > >>> >         at javassist.CtClassType.subtypeOf(CtClassType.java:303)
> > >>> >         at javassist.CtClassType.subtypeOf(CtClassType.java:318)
> > >>> >         at
> > >>> >
> > >>>
> >
> javassist.compiler.MemberResolver.compareSignature(MemberResolver.java:247)
> > >>> >         at
> > >>> >
> > javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:119)
> > >>> >         at
> > >>> >
> > javassist.compiler.MemberResolver.lookupMethod(MemberResolver.java:96)
> > >>> >         at
> > >>> >
> javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:704)
> > >>> >         at
> > >>> javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
> > >>> >         at
> > >>> >
> > javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
> > >>> >         at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
> > >>> >         at
> > >>> >
> > >>>
> >
> javassist.compiler.JvstTypeChecker.atCastToRtype(JvstTypeChecker.java:112)
> > >>> >         at
> > >>> >
> > javassist.compiler.JvstTypeChecker.atCastExpr(JvstTypeChecker.java:93)
> > >>> >         at javassist.compiler.ast.CastExpr.accept(CastExpr.java:54)
> > >>> >         at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:241)
> > >>> >         at javassist.compiler.CodeGen.compileExpr(CodeGen.java:228)
> > >>> >         at
> > javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:597)
> > >>> >         at
> > >>> > javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
> > >>> >         at javassist.compiler.CodeGen.atStmnt(CodeGen.java:362)
> > >>> >         at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
> > >>> >         at
> javassist.compiler.CodeGen.atMethodBody(CodeGen.java:291)
> > >>> >         at javassist.compiler.Javac.compileBody(Javac.java:222)
> > >>> >         at javassist.CtBehavior.setBody(CtBehavior.java:401)
> > >>> >         at javassist.CtBehavior.setBody(CtBehavior.java:375)
> > >>> >         at
> > >>> >
> > >>> >
> > >>>
> >
> org.apache.tapestry5.ioc.internal.services.ClassFabImpl.addMethod(ClassFabImpl.java:226)
> > >>> >         ... 176 more
> > >>> > Caused by: java.io.IOException: invalid constant type: 15
> > >>> >         at
> javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
> > >>> >         at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
> > >>> >         at javassist.bytecode.ConstPool.<init>(ConstPool.java:149)
> > >>> >         at javassist.bytecode.ClassFile.read(ClassFile.java:737)
> > >>> >         at javassist.bytecode.ClassFile.<init>(ClassFile.java:108)
> > >>> >         at
> javassist.CtClassType.getClassFile2(CtClassType.java:190)
> > >>> >         ... 199 more
> > >>> >
> > >>>
> > >>>
> > >>>
> > >>> --
> > >>> Howard M. Lewis Ship
> > >>>
> > >>> Creator of Apache Tapestry
> > >>>
> > >>> The source for Tapestry training, mentoring and support. Contact me
> to
> > >>> learn how I can get you up and productive in Tapestry fast!
> > >>>
> > >>> (971) 678-5210
> > >>> http://howardlewisship.com
> > >>>
> > >>
> > >>
> > >
> >
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>