You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Mats Andersson (JIRA)" <ji...@apache.org> on 2019/04/06 09:00:00 UTC

[jira] [Commented] (TAP5-2588) Does not work with Java 9

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

Mats Andersson commented on TAP5-2588:
--------------------------------------

I stepped into a couple of issues related to ASM and Java 9. In org.apache.tapestry5.internal.plastic.asm.ClassVisitor#visitNestMember ASM7 is required, but calls from internal/plastic and ioc modules are made using ASM4 as parameter. See patch below for details:


From 1f428d21610ca2ee4a0b0630b1e3d1c693a5a7e6 Mon Sep 17 00:00:00 2001
From: Mats Andersson <ma...@ronsoft.se>
Date: Mon, 1 Apr 2019 17:52:26 +0200
Subject: [PATCH] ASM7 dependencies

---
 .../apache/tapestry5/internal/plastic/PlasticInternalUtils.java | 2 +-
 .../tapestry5/ioc/internal/AbstractReloadableObjectCreator.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticInternalUtils.java b/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticInternalUtils.java
index f0ea0fb5e..4a6df1835 100644
--- a/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticInternalUtils.java
+++ b/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticInternalUtils.java
@@ -426,7 +426,7 @@ public class PlasticInternalUtils

         ClassNode result = new ClassNode();

-        ClassVisitor adapter = new ClassVisitor(Opcodes.ASM4, result)
+        ClassVisitor adapter = new ClassVisitor(Opcodes.ASM7, result)
         {
             @Override
             public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions)
diff --git a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java
index 1dfd26250..33096341a 100644
--- a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java
+++ b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java
@@ -211,7 +211,7 @@ public abstract class AbstractReloadableObjectCreator implements ObjectCreator,

     public Class<?> doClassLoad(String className) throws IOException
     {
-        ClassVisitor analyzer = new ClassVisitor(Opcodes.ASM4)
+        ClassVisitor analyzer = new ClassVisitor(Opcodes.ASM7)
         {
             @Override
             public void visit(int version, int access, String name, String signature, String superName, String[] interfaces)
--
2.17.1

> Does not work with Java 9
> -------------------------
>
>                 Key: TAP5-2588
>                 URL: https://issues.apache.org/jira/browse/TAP5-2588
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: plastic
>    Affects Versions: 5.4.3
>            Reporter: Jochen Kemnade
>            Assignee: Thiago H. de Paula Figueiredo
>            Priority: Critical
>             Fix For: 5.5.0
>
>         Attachments: 0001-TAP5-2588-Upgrade-ASM-6.x-7.0.1-for-Java-11-support.patch
>
>
> You cannot use Tapestry with Java 9 because of an outdated ASM version in plastic (5.0.4). AFAICT, we'll need to upgrade to 6.0. My attempt do do so results in a {{ClassCastException}} in {{org.apache.tapestry5.plastic.ArrayAttributeAnnotations.explicit values for array attributes}}.
> {noformat}
> java.lang.ClassCastException: [I cannot be cast to java.base/[Ljava.lang.Object;
> 	at org.apache.tapestry5.internal.plastic.AbstractAnnotationBuilder$2.visitEnd(AbstractAnnotationBuilder.java:134)
> 	at org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode.accept(AnnotationNode.java:284)
> 	at org.apache.tapestry5.internal.plastic.asm.tree.AnnotationNode.accept(AnnotationNode.java:251)
> 	at org.apache.tapestry5.internal.plastic.PlasticClassPool.createAnnotation(PlasticClassPool.java:307)
> 	at org.apache.tapestry5.internal.plastic.PlasticClassPool$4.buildAnnotation(PlasticClassPool.java:286)
> 	at org.apache.tapestry5.internal.plastic.PlasticClassPool$4.getAnnotation(PlasticClassPool.java:270)
> 	at org.apache.tapestry5.internal.plastic.DelegatingAnnotationAccess.getAnnotation(DelegatingAnnotationAccess.java:42)
> 	at org.apache.tapestry5.internal.plastic.PlasticClassImpl.getAnnotation(PlasticClassImpl.java:342)
> 	at org.apache.tapestry5.plastic.ArrayAttributeAnnotations.explicit values for array attributes(ArrayAttributeAnnotations.groovy:27)
> {noformat}
> The {{AbstractAnnotationBuilder}} subclass tries to cast an {{int[]}} to an {{Object[]}}.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)