From 272a25274cfb99f47385de5a3ef4682e93c6fb88 Mon Sep 17 00:00:00 2001 From: Conor MacNeill Date: Mon, 11 Mar 2002 11:53:29 +0000 Subject: [PATCH] When Available checks for a class make sure the class can actually be used and not just loaded. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271815 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/tools/ant/taskdefs/Available.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/Available.java b/src/main/org/apache/tools/ant/taskdefs/Available.java index 93462608a..994030d65 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Available.java +++ b/src/main/org/apache/tools/ant/taskdefs/Available.java @@ -74,7 +74,6 @@ import org.apache.tools.ant.util.FileUtils; * * @ant.task category="control" */ - public class Available extends Task implements Condition { private String property; @@ -349,22 +348,29 @@ public class Available extends Task implements Condition { private boolean checkClass(String classname) { try { + Class requiredClass = null; if (loader != null) { - loader.loadClass(classname); + requiredClass = loader.loadClass(classname); } else { ClassLoader l = this.getClass().getClassLoader(); // Can return null to represent the bootstrap class loader. // see API docs of Class.getClassLoader. if (l != null) { - l.loadClass(classname); + requiredClass = l.loadClass(classname); } else { - Class.forName(classname); + requiredClass = Class.forName(classname); } } + AntClassLoader.initializeClass(requiredClass); return true; } catch (ClassNotFoundException e) { + log("class \"" + classname + "\" was not found", + Project.MSG_DEBUG); return false; } catch (NoClassDefFoundError e) { + log("Could not load dependent class \"" + e.getMessage() + + "\" for class \"" + classname + "\"", + Project.MSG_DEBUG); return false; } }