Le 12 mai 2014 à 02:51, Martin Gainty <mgai...@hotmail.com> a écrit :

>> Subject: Re: Classloading issue
>> From: nicolas.lale...@hibnet.org
>> Date: Mon, 12 May 2014 01:51:12 +0200
>> To: dev@ant.apache.org
>> 
>> 
>> 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
> 
> MG>Hi Nicholas
> MG>local classloader cannot resolve jdsch-agentproxy.core-0.0.7.jar?
> MG>what happens when you place
> MG>http://www.grepcode.com/snapshot/repo1.maven.org/maven2/com.jcraft/jsch.agentproxy.core/0.0.7/jsch.agentproxy.core-0.0.7.jar
> MG>on SYSTEM classpath?

jsch-agentproxy isn't on the classpath on purpose. If we don't need the ssh 
agent feature, we shouldn't need this jar.

Nicolas

> 
>>>     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
>> 
>                                         


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

Reply via email to