Browse Source

Don't swallow the stack trace if a Java program throws an exception.

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@276233 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 21 years ago
parent
commit
54b827ff4f
4 changed files with 50 additions and 2 deletions
  1. +3
    -0
      WHATSNEW
  2. +18
    -0
      docs/faq.html
  3. +14
    -2
      src/main/org/apache/tools/ant/taskdefs/Java.java
  4. +15
    -0
      xdocs/faq.xml

+ 3
- 0
WHATSNEW View File

@@ -84,6 +84,9 @@ Fixed bugs:

* NPE when running commons listener. Bugzilla Report 27373.

* <java> swallowed the stack trace of exceptions thrown by the
executed program if run in the same VM.

Other changes:
--------------



+ 18
- 0
docs/faq.html View File

@@ -341,6 +341,12 @@
Why do my custom task containers see Unknown Elements in Ant 1.6
- they worked in Ant 1.5?
</a></li>
<li><a href="#java.exception.stacktrace">
The program I run via &lt;java&gt; throws an exception but I
can't seem to get the full stack trace.
</a></li>
</ul>
@@ -1593,6 +1599,18 @@ mv /tmp/foo $ANT_HOME/bin/antRun
<p>
This approach should work for ant1.5 and ant1.6.
</p>
<p class="faq">
<a name="java.exception.stacktrace"></a>
The program I run via &lt;java&gt; throws an exception but I
can't seem to get the full stack trace.
</p>
<p>This is a know bug that has been fixed after the release of
Ant 1.6.1.</p>
<p>As a workaround, run your &lt;java&gt; task with
<code>fork="true"</code> and Ant will display the full
trace.</p>
</div>
</div>



+ 14
- 2
src/main/org/apache/tools/ant/taskdefs/Java.java View File

@@ -19,6 +19,8 @@ package org.apache.tools.ant.taskdefs;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Vector;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.ExitException;
@@ -169,14 +171,14 @@ public class Java extends Task {
if (failOnError) {
throw e;
} else {
log(e.getMessage(), Project.MSG_ERR);
log(e);
return 0;
}
} catch (Throwable t) {
if (failOnError) {
throw new BuildException(t);
} else {
log(t.getMessage(), Project.MSG_ERR);
log(t);
return 0;
}
}
@@ -792,4 +794,14 @@ public class Java extends Task {
return new ExecuteWatchdog(timeout.longValue());
}

/**
* @since 1.6.2
*/
private void log(Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter w = new PrintWriter(sw);
t.printStackTrace(w);
w.close();
log(sw.toString(), Project.MSG_ERR);
}
}

+ 15
- 0
xdocs/faq.xml View File

@@ -1409,6 +1409,21 @@ mv /tmp/foo $ANT_HOME/bin/antRun
</p>
</answer>
</faq>

<faq id="java.exception.stacktrace">
<question>
The program I run via &lt;java&gt; throws an exception but I
can't seem to get the full stack trace.
</question>
<answer>
<p>This is a know bug that has been fixed after the release of
Ant 1.6.1.</p>

<p>As a workaround, run your &lt;java&gt; task with
<code>fork="true"</code> and Ant will display the full
trace.</p>
</answer>
</faq>
</faqsection>

</document>

Loading…
Cancel
Save