Author: stevel
Date: Tue Aug 22 16:07:49 2006
New Revision: 433794

URL: http://svn.apache.org/viewvc?rev=433794&view=rev
Log:
This is slick. Instead of printing ANT_HOME/lib in the message, we print the 
real directory set where libs can be added. And, if ant.home is not set, we 
decide this is an IDE and tell the user that too.

Modified:
    ant/core/trunk/src/main/org/apache/tools/ant/ComponentHelper.java

Modified: ant/core/trunk/src/main/org/apache/tools/ant/ComponentHelper.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/ComponentHelper.java?rev=433794&r1=433793&r2=433794&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/ComponentHelper.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/ComponentHelper.java Tue Aug 
22 16:07:49 2006
@@ -837,6 +837,36 @@
         boolean antTask;
         String home = System.getProperty(Launcher.USER_HOMEDIR);
         File libDir = new File(home, Launcher.USER_LIBDIR);
+        String antHomeLib;
+        boolean probablyIDE=false;
+        String anthome = System.getProperty(MagicNames.ANT_HOME);
+        if(anthome!=null) {
+            File antHomeLibDir = new File(anthome,"lib");
+            antHomeLib=antHomeLibDir.getAbsolutePath();
+        } else {
+            //running under an IDE that doesn't set ANT_HOME
+            probablyIDE=true;
+            antHomeLib = "ANT_HOME" +File.separatorChar +"lib";
+        }
+        StringBuffer dirListingText = new StringBuffer();
+        final String tab = "        -";
+        dirListingText.append(tab);
+        dirListingText.append(antHomeLib);
+        dirListingText.append('\n');
+        if(probablyIDE) {
+            dirListingText.append(tab);
+            dirListingText.append("the IDE Ant configuration dialogs");
+        } else {
+            dirListingText.append(tab);
+            dirListingText.append(libDir);
+            dirListingText.append('\n');
+            dirListingText.append(tab);
+            dirListingText.append(
+                    "a directory added on the command line with the -lib 
argument");
+        }
+
+        String dirListing=dirListingText.toString();
+        
         //look up the name
         AntTypeDefinition def = getDefinition(componentName);
         if (def == null) {
@@ -849,9 +879,8 @@
             if (isAntlib) {
                 out.println();
                 out.println("This appears to be an antlib declaration. ");
-                out.println("Action: Check that the implementing library 
exists "
-                        + "in ANT_HOME/lib or in ");
-                out.println("        " + libDir);
+                out.println("Action: Check that the implementing library 
exists in one of:");
+                out.println(dirListing);
             }
             definitions = true;
         } else {
@@ -870,13 +899,12 @@
                 jars = true;
                 if (optional) {
                     out.println("        This looks like one of Ant's optional 
components.");
-                    out.println("Action: Check that the appropriate optional 
JAR exists "
-                            + "in ANT_HOME/lib or in ");
-                    out.println("        " + libDir);
+                    out.println("Action: Check that the appropriate optional 
JAR exists in");
+                    out.println(dirListing);
                 } else {
                     out.println("Action: Check that the component has been 
correctly declared");
-                    out.println("        and that the implementing JAR is in 
ANT_HOME/lib or in");
-                    out.println("        " + libDir);
+                    out.println("        and that the implementing JAR is in 
one of:");
+                    out.println(dirListing);
                     definitions = true;
                 }
             } catch (NoClassDefFoundError ncdfe) {
@@ -884,15 +912,14 @@
                 out.println("Cause: Could not load a dependent class "
                         +  ncdfe.getMessage());
                 if (optional) {
-                    out.println("       It is not enough to have Ant's 
optional JAR, you need the JAR");
-                    out.println("       files that it depends upon.");
-                    out.println("Ant's optional task dependencies are listed 
in the manual.");
+                    out.println("       It is not enough to have Ant's 
optional JARs");
+                    out.println("       you need the JAR files that the 
optional tasks depend upon.");
+                    out.println("       Ant's optional task dependencies are 
listed in the manual.");
                 } else {
                     out.println("       This class may be in a separate JAR 
that is not installed.");
                 }
-                out.println("Action: Determine what extra JAR files are 
needed, and place them");
-                out.println("        in ANT_HOME/lib or");
-                out.println("        in " + libDir);
+                out.println("Action: Determine what extra JAR files are 
needed, and place them in one of:");
+                out.println(dirListing);
             }
             //here we successfully loaded the class or failed.
             if (clazz != null) {
@@ -925,9 +952,8 @@
                     out.println("Cause:  A class needed by class "
                             + classname + " cannot be found: ");
                     out.println("       " + ncdfe.getMessage());
-                    out.println("Action: Determine what extra JAR files are 
needed, and place them");
-                    out.println("        in ANT_HOME/lib or");
-                    out.println("        in " + libDir);
+                    out.println("Action: Determine what extra JAR files are 
needed, and place them in:");
+                    out.println(dirListing);
                 }
             }
             out.println();



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to