Adrien Quillet created EASYANT-75:
-------------------------------------

             Summary: Class.getMethod / Class.invoke: compliance with J2SE 1.7
                 Key: EASYANT-75
                 URL: https://issues.apache.org/jira/browse/EASYANT-75
             Project: EasyAnt
          Issue Type: Bug
          Components: Core
    Affects Versions: 0.9, 0.10
            Reporter: Adrien Quillet
            Priority: Blocker


When running EasyAnt with J2SE 1.7, calling 
{{EasyAntEngine.guessEasyantCoreJarUrl()}} raises a 
{{NoSuchMethodException}}/{{IllegalArgumentException}}.

*Code to fix:*
{{EasyAntEngine.getLocalURL = conn.getClass().getMethod("getLocalURL", 
(Class<?>) null)}}
{{URL localJarUrl = (URL) getLocalURL.invoke(conn, (Class<?>) null)}}

*Fixed code:*
{{EasyAntEngine.getLocalURL = conn.getClass().getMethod("getLocalURL", null)}}
{{URL localJarUrl = (URL) getLocalURL.invoke(conn, null)}}

*Reason:*
>From JES2 1.7 Javadoc, calling {{getMethod}} or {{invoke}} with no varArg or a 
>{{null}} varArg is treated as if the method was called with an empty array 
>(compliance with JES2 1.5).
But calling those methods with a {{null}} varArg that is casted to {{Class<?>}} 
is treated as an array of {{Class<?>}} that contains one {{null}} element. So 
there is no matching method, hence the 
{{NoSuchMethodException}}/{{IllegalArgumentException}}. 

_see also:_ 
http://stackoverflow.com/questions/5586862/weird-behaviour-of-getmethod-in-java-reflection-api-can-someone-explain-this



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to