[ https://issues.apache.org/jira/browse/VELOCITY-579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12594595#action_12594595 ]
Eric Ballet Baz commented on VELOCITY-579: ------------------------------------------ Yes it worked in Velocity 1.4 and stopped working in 1.5. To reproduce the problem : 1) Add to your classpath the library "tools.jar" which you can find in the lib directory of the Sun JDK 2) In your java test program add these two lines : com.sun.javadoc.MethodDoc methodDoc = new com.sun.tools.javadoc.MethodDocImpl(null, null); context.put("methodDoc", methodDoc); 3) In your .vm template simply define : $methodDoc.tags() 4) Run your test program You should see something like : ASTMethod.execute() : exception invoking method 'tags' in class com.sun.tools.javadoc.MethodDocImpl java.lang.IllegalAccessException: Class org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl can not access a member of class com.sun.tools.javadoc.DocImpl with modifiers "public" at sun.reflect.Reflection.ensureMemberAccess(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:295) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:245) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:203) at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:294) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:318) at org.apache.velocity.Template.merge(Template.java:254) at Example.<init>(Example.java:100) at Example.main(Example.java:129) But the method tags() is very public ! it's defined in the following interface : http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/doclet/spec/com/sun/javadoc/Doc.html#tags() and implemented as a public method in DocImpl. The problem here is that the class DocImpl is not public even if she implements public methods, this class is package protected : abstract class DocImpl implements Doc, Comparable This is exactly the same problem with the Weblogic implementation of javax.servlet.http.HttpSession which is not a public class, even if its methods are public! > Can not access a member of class X with modifiers "public" even if method is > public > ----------------------------------------------------------------------------------- > > Key: VELOCITY-579 > URL: https://issues.apache.org/jira/browse/VELOCITY-579 > Project: Velocity > Issue Type: Bug > Components: Engine > Affects Versions: 1.5 > Reporter: Eric Ballet Baz > Priority: Blocker > > When upgrading from 1.4 to 1.5 none of my template is working anymore. > For example : > [javadoc] ERROR [console:logVelocityMessage] - ASTMethod.execute() : > exception invoking method 'tags' in class com.sun.tools.javadoc.MethodDocImpl > [javadoc] ERROR [console:logVelocityMessage] - > java.lang.IllegalAccessException: Class > org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl can not > access a member of class com.sun.tools.javadoc.DocImpl with modifiers "public" > The method 'tags()' is public in com.sun.javadoc.Doc, but the implementation > is package protected. So the java.lang.reflect.Method object is well returned > by the org.apache.velocity.util.introspection.Introspector but not accessible > from templates. > The same errors occured for example for javax.servlet.http.HttpSession > Weblogic's implementation which is not public, but methods are ! > It's not possible to wrap all objects javax.servlet.http.HttpSession into > public implementations ... > The Introspector could call method.setAccessible(true) before returning > Method object : if this method has been found, it is a public method ! -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]