Le 12 mai 2014 à 01:34, Antoine Levy Lambert <anto...@gmx.de> a écrit :

> Hello Nicolas,
> 
> I have tried your test case and it is failing as you except :
> 
> BUILD FAILED
> /Users/antoine/dev/asf/ivyde-trunk/test/ssh-resolver/build.xml:27: 
> java.lang.NoClassDefFoundError: com/jcraft/jsch/agentproxy/AgentProxyException
>       at 
> org.apache.ivy.plugins.repository.ssh.AbstractSshBasedRepository.getSession(AbstractSshBasedRepository.java:108)
>       at 
> org.apache.ivy.plugins.repository.ssh.SshRepository.resolveResource(SshRepository.java:82)
>       at 
> org.apache.ivy.plugins.repository.ssh.SshResource.resolve(SshResource.java:101)
> 
> The line 108 in AbstractSsshBasedRepository contains this :
> 
>       return SshCache.getInstance().getSession(host, port, user, 
> userPassword, getKeyFile(),
>           getKeyFilePassword(), getPassFile(), isAllowedAgentUse());
> 
> getSession is a method which calls attemptAgentUse.

It is only called is attemptAgentUse is true. In our case it is false.

> Does this explain why an attempt to load AgentProxyException happens at that 
> time ?

I have plugged a debugger, and the class loading exception is raised on the 
call of SshCache.getInstance(). As far as I can tell, it is the class SshCache 
which fails to load, but I don't understand why.

Nicolas

> 
> Regards,
> 
> Antoine
> 
> On May 11, 2014, at 5:41 PM, Nicolas Lalevée <nicolas.lale...@hibnet.org> 
> wrote:
> 
>> Hi,
>> 
>> I need some help to understand a bug around classloading (nothing that 
>> particular to Ivy).
>> 
>> I was looking into IVY-1471 [1] and I don't understand why it is failing 
>> that way. In the classpath there are both Ivy and Jsch, but not the optional 
>> jar related to managing the ssh agent via jsch. And it is failing because a 
>> class in that optional jar is not found. But I don't understand why the 
>> classloader is looking for it in the first place.
>> 
>> The error is raised is AbstractSshBasedRepository, on the call of 
>> SshCache.getInstance() [2]. But as far as I can tell, nothing in the loading 
>> of the SshCache [3] class requires AgentProxyException. The class is only 
>> needed by the function SshCache#attemptAgentUse() [4], which will be called 
>> at runtime, if the end user actually want ssh agent support, in which case 
>> it would naturally fail. But here it fails very earlier.
>> 
>> I have made a test case you can test with its build.xml, no IvyDE required 
>> there [5].
>> 
>> Am I missing something ? Is there a special treatment for the loading of 
>> Exception classes ?
>> 
>> Nicolas
>> 
>> [1] https://issues.apache.org/jira/browse/IVY-1471
>> [2] 
>> https://fisheye6.atlassian.com/browse/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/AbstractSshBasedRepository.java?hb=true#to108
>> [3] 
>> https://fisheye6.atlassian.com/browse/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/SshCache.java?hb=true
>> [4] 
>> https://fisheye6.atlassian.com/browse/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/repository/ssh/SshCache.java?hb=true#to300
>> [5] http://svn.apache.org/repos/asf/ant/ivy/ivyde/trunk/test/ssh-resolver/
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
>> For additional commands, e-mail: dev-h...@ant.apache.org
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
> For additional commands, e-mail: dev-h...@ant.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org

Reply via email to