2012-07-10 52 views
0

我在创建自定义任务时,在创建该自定义任务时,我面临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例外 enter image description here

我推测错误时,编译器解析撞线

SAXBuilder saxBuilder = new SAXBuilder(); 

老实说,迄今为止我还没有在java中遇到过这个异常。这里有什么问题?

+0

而不是捕获异常,在这种情况下,为了调试的目的,改变捕获Throwable(错误的不是例外,并因此会通过其他方式)。这至少会为您从哪里开始寻找更好的诊断。 – Crollster 2012-07-10 08:16:53

+0

请发布整个堆栈跟踪。我想,它可以通过调整蚂蚁日志记录级别来获得。 – Vadzim 2012-07-10 12:04:42

回答

1

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

只需使用解决了这个问题:

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

,而不是无参数的构造函数。