I was thinking of doing a runtime type check on the exception returned (grabbing an instance of the class via introspection, to avoid a classload-time dependency) and reraising anything unexpected wrapped in a RuntimeException; otherwise, that's pretty much exactly the way I would have fixed the issue.
On Tue, May 13, 2014 at 11:55 AM, Nicolas Lalevée < nicolas.lale...@hibnet.org> wrote: > r1594279 seems to fix the issue, but I still don't understand why. > Any suggestion of a better fix is welcomed. > > Nicolas > > Le 11 mai 2014 à 23:41, Nicolas Lalevée <nicolas.lale...@hibnet.org> a > écrit : > > > 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 > >