<?xml version="1.0"?>
<!--
     Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<document>

  <properties>
    <author email="">Conor MacNeill</author>
    <title>Having Problems?</title>
  </properties>

  <body>
    <section name="Having Problems?">
        <p>
           This page details some steps you can take to try and resolve
           any problems you may be having with Ant. If you find you can't
           resolve the problem, then this page will help you collect some of
           the relevant information to provide in a bug report. This information
           will help the Ant developers understand and resolve the problem.
           Of course, not all the steps here will make sense for every problem
           you may encounter - these are just some suggestions to point
           you in the right direction.
        </p>

      <subsection name="Ensure that you are actually running the version of Ant that you think you do">
        <p>Many tools include a version of Ant and some Operating
        Systems even install it by default now, so you may have a
        version of Ant installed that you haven't been aware of.</p>

        <p>One of the first things to do is to run
          <br></br><br></br>
          <font face="verdana" size="-1">ant -version</font>
          <br></br><br></br>
          and
          <br></br><br></br>
          <font face="verdana" size="-1">ant -diagnostics</font>
          <br></br><br></br>
          to be sure.  Also, we highly recommend that you run Ant with
          an empty CLASSPATH.  If any other version of Ant can be
          loaded from the CLASSPATH, many types of errors may happen
          because of incompatible classes being loaded.</p>

        <p>See <a href="faq.html">the FAQ</a> for <a
        href="faq.html#NoClassDefFoundError">some</a> <a
        href="faq.html#InstantiationException">examples</a>, but many
        other problems are a result of an old version of Ant on your
        system as well.</p>

      </subsection>

      <subsection name="Read the Manual">
         <p>
            The first step to take when you have a problem with Ant is to read
            the <a href="manual/index.html">manual</a> entry for the task or
            concept that is giving you trouble. In particular, check the
            meaning of a task's attributes and nested elements. Perhaps an
            attribute is available that would provide the behavior you require.
            If you have problems with the manual itself, you can submit a
            documentation bug report (see below) to help us improve the Ant
            documentation.
         </p>
      </subsection>
      <subsection name="Examine Debug Output">
         <p>
            If you're still having a problem, the next step is to try and
            gather additional information about what Ant is doing.
            Try running Ant with the <code>verbose</code> flag:
            <br></br><br></br>
            <font face="verdana" size="-1">ant -verbose</font>
            <br></br><br></br>
            or
            <br></br><br></br>
            <font face="verdana" size="-1">ant -v</font>
            <br></br><br></br>

            This will produce output that starts like the following:</p>
<table>
<tr>
<td>
Ant version 1.4.1 compiled on October 11 2001<br></br>
Buildfile: build.xml<br></br>
Detected Java version: 1.3 in: D:\usr\local\java\jdk13\jre<br></br>
Detected OS: Windows NT<br></br>
parsing buildfile D:\ant\build.xml
with URI = file:D:/ant/build.xml<br></br>
Project base dir set to: D:\ant<br></br>
&#160;&#160;[property] Loading Environment env.<br></br>
&#160;&#160;[property] Loading D:\ant\conf.properties<br></br>
Build sequence for target &#39;debug&#39; is [debug]<br></br>
Complete build sequence is [debug, gensrc, compile, jar, test]<br></br>
. . .<br></br>
</td>
</tr>
</table>
           <p>
              You should be able to see from the trace more about what Ant
              is doing and why it's taking a particular course of action.
              If you need even more information, you can use the
              <code>-debug</code> flag rather than
              <code>-verbose</code>.
              This will generally produce so much
              output that you may want to save the output to a file and
              analyze it in an editor. You can save the output using the
              <code>-logfile &lt;filename&gt;</code> flag, or
              using redirection.
           </p>
           <p>
              Once you have all this debug information, how can you use it
              to solve your problem?  That will depend on the task in question
              and the nature of your problem. Each task logs different aspects
              of its operation, but it should give you an idea of what is going
              on. For example, the <code>&lt;javac&gt;</code> task logs the
              reasons why it
              chooses to compile particular class files and not others, along
              with which compiler it is using and the arguments it will pass
              to that compiler. The following partial trace shows why
              <code>&lt;javac&gt;</code> is adding one class file but
              skipping another.
              This is followed by which compiler it will be using, the
              arguments that will get passed to the compiler,
              and a list of all the class files to be compiled.
           </p>
<table>
<tr>
<td>
[javac] Test.java omitted as D:\classes\Test.class is up to date.<br></br>
[javac] Unset.java added as D:\classes\Unset.class is outdated.<br></br>
[javac] Compiling 1 source file to D:\classes<br></br>
[javac] Using classic compiler<br></br>
[javac] Compilation args: -d D:\classes -classpath D:\classes;<br></br>
D:\jdk118\classes.zip; -sourcepath D:\src\java -g:none<br></br>
[javac] File to be compiled:<br></br>
D:\src\java\Unset.java<br></br>
</td>
</tr>
</table>

           <p>
              In many cases, Ant tasks are wrappers around OS commands or
              other Java classes. In debug mode, many of these tasks will
              print out the equivalent command line, as the
              <code>&lt;javac&gt;</code> task
              output does. If you are having a problem, it is often useful to
              run the command directly from the command line, in the same way
              Ant is running it, and see if the problem occurs from there
              as well. The problem may be in the command that is being run,
              or it may be in the way the Ant task is running the command.
              You can also see the effect of changing attribute values on the
              generated command line. This can help you to understand whether
              you are using the correct attributes and values.
            </p>
      </subsection>

      <subsection name="Has It Been Fixed?">
         <p>
            After examining the debug output, if you still believe that the
            problem you are having is caused by Ant, chances are that someone
            else may have already encountered this problem, and perhaps it has
            been fixed. The next step, therefore, would be to download the
            sources of ant, see <a href="svn.html">svn</a>.
        </p>
        <p>
          <a href="http://vmgump.apache.org/gump/public/index.html">Gump</a>
          is building ant every night and using the ant built from the
          latest source to build a long list of open source projects. However,
          the version of ant built by gump is not available for download. Even
          if it were, it would not include most of the optional tasks.
        </p>
        <p>
            We currently do not have nightly builds including the optional tasks.
        </p>
      </subsection>
      

         
    </section>
    <section name="bugs">
      <p>If you are convinced that you have identified an unfixed bug, please turn to
      our document concerning the <a href="bugs.html">bug database</a>.</p>
    </section>
    
  </body>
</document>
