创建ant自定义任务时出现ExceptionInInitializerError

时间:2012-07-10 08:03:19

标签: java ant

我正在创建一个自定义任务,在创建时,我正面临ExceptionInInitializer异常。 我已经在我的ant lib目录中放置了jdom-2.0.2.jar,以便自定义任务成功编译。 以下是我的自定义任务代码

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");
            } 
    }
}

这是我的蚂蚁文件

<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异常 enter image description here

我认为编译器解析行时出现错误

SAXBuilder saxBuilder = new SAXBuilder();

老实说,到目前为止我还没有在java中遇到过这个异常。这有什么不对?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并根据here

解决了这个问题

只需使用:

SAXBuilder saxBuilder = new SAXBuilder(new XMLReaderSAX2Factory(false, "org.apache.xerces.parsers.SAXParser"));

而不是no-arg构造函数。