创建ant自定义任务时发生ExceptionInInitializerError
问题描述:
我在创建自定义任务时,在创建该自定义任务时,我面临ExceptionInInitializer异常。 我已将jdom-2.0.2.jar放入我的ant lib目录中,以便自定义任务能够成功编译。 下面是我的自定义任务的代码创建ant自定义任务时发生ExceptionInInitializerError
import java.io.*;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
public class Demo extends Task {
private String init;
@Override
public void execute() throws BuildException {
if(!init.isEmpty() && init!=null){
display();
}else{
throw new BuildException("Please enter attribute init");
}
}
public void setInit(String init){
this.init=init;
}
public void display(){
System.out.println("init value is "+init);
try {
SAXBuilder saxBuilder = new SAXBuilder();
} catch (Exception e) {
e.printStackTrace();
throw new BuildException("JDOMException caught");
}
}
}
这是我的Ant文件
<project name="XMLUpdate" default="main" basedir=".">
<target name="main" depends="compile,jar,runtask">
</target>
<target name="compile">
<javac srcdir="." destdir="."/>
</target>
<target name="jar">
<jar destfile="./Demo.jar" basedir="." includes="*.class"/>
</target>
<target name="runtask">
<taskdef name="dem" classname="Demo"/>
<dem init="BOM.xml" />
</target>
</project>
我面对ExceptionInInitializer例外
我推测错误时,编译器解析撞线
SAXBuilder saxBuilder = new SAXBuilder();
老实说,迄今为止我还没有在java中遇到过这个异常。这里有什么问题?
答
我遇到了同样的问题,并根据here
只需使用解决了这个问题:
SAXBuilder saxBuilder = new SAXBuilder(new XMLReaderSAX2Factory(false, "org.apache.xerces.parsers.SAXParser"));
,而不是无参数的构造函数。
而不是捕获异常,在这种情况下,为了调试的目的,改变捕获Throwable(错误的不是例外,并因此会通过其他方式)。这至少会为您从哪里开始寻找更好的诊断。 – Crollster 2012-07-10 08:16:53
请发布整个堆栈跟踪。我想,它可以通过调整蚂蚁日志记录级别来获得。 – Vadzim 2012-07-10 12:04:42