HtmlUnitDriver正在抛出java.lang.ExceptionInInitializeError

HtmlUnitDriver正在抛出java.lang.ExceptionInInitializeError,java,ant,htmlunit,htmlunit-driver,Java,Ant,Htmlunit,Htmlunit Driver,我正在编写一个ant任务,它使用以下代码: public class Klazz extends Task{ public void execute() throws BuildException{ HtmlUnitDriver driver = new HtmlUnitDriver(); driver.get("file:///C:/sample/alltests-fails.html"); } 在eclipse中,名为“testprojec

我正在编写一个ant任务,它使用以下代码:

public class Klazz extends Task{    
    public void execute() throws BuildException{

        HtmlUnitDriver driver = new HtmlUnitDriver();
        driver.get("file:///C:/sample/alltests-fails.html");
}
在eclipse中,名为“testproject”的项目使用了“libs”文件夹,其中包含要添加到类路径中的jar(ant.jar,selenium-server-standalone-2.44.0.jar)。如果我在Eclipse中运行代码,它工作正常,但在作为ant任务运行时,它抛出java.lang.ExceptionInInitializerError。下面是build.xml代码段,用于创建jar(名为custom task.jar)文件,该文件需要放在%ant\u home%\lib文件夹中

<target name="jar" depends="compile" >
        <mkdir dir="build/jar" />
        <jar destfile="${env.ANT_HOME}/lib/custom-task.jar">
            <fileset dir="build/classes" />         
            <restrict>
                <name name="**/*.class" />
                <archives> 
                    <zips>
                        <fileset dir="${basedir}/libs/" includes="**/*.jar" />
                    </zips>
                </archives>
            </restrict>
        </jar>
    </target>

可能是在通过上面的“jar”任务创建jar时,没有在类路径中正确添加外部jar/类,导致缺少一些类文件,从而导致异常InInitializerRor。 提前感谢您在这方面的帮助

下面是堆栈跟踪:

java.lang.ExceptionInInitializerError
        at org.cyberneko.html.HTMLScanner.scanEntityRef(HTMLScanner.java:1415)
        at org.cyberneko.html.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2
059)
        at org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:920)
        at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:499
)
        at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:452
)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.pars
e(HTMLParser.java:926)
        at com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:2
45)
        at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.ja
va:191)


       at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(Defau
ltPageCreator.java:268)
        at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPa
geCreator.java:156)
        at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient
.java:455)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:329)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:394)
        at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:4
77)
        at org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:4
66)

at mypkg.Klazz.execute(Klazz.java:15)

       at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:435)
        at org.apache.tools.ant.Target.performTasks(Target.java:456)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe
cutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
        at org.apache.tools.ant.Main.runBuild(Main.java:851)
        at org.apache.tools.ant.Main.startAnt(Main.java:235)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.lang.NullPointerException
        at java.util.Properties$LineReader.readLine(Properties.java:434)
        at java.util.Properties.load0(Properties.java:353)
        at java.util.Properties.load(Properties.java:341)
        at org.cyberneko.html.HTMLEntities.load0(HTMLEntities.java:101)
        at org.cyberneko.html.HTMLEntities.<clinit>(HTMLEntities.java:53)
        ... 33 more

Total time: 2 seconds
java.lang.ExceptionInInitializeError
位于org.cyberneko.html.HTMLScanner.scanentyref(HTMLScanner.java:1415)
位于org.cyberneko.html.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2
059)
位于org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:920)
位于org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:499
)
位于org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:452
)
位于org.apache.xerces.parsers.XMLParser.parse(未知源)
在com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.pars上
e(HTMLParser.java:926)
在com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:2
45)
在com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.ja
弗吉尼亚州:191)
在com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(Defau
ltPageCreator.java:268)
在com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPa
geCreator.java:156)
在com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient
.java:455)
在com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:329)上
在com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:394)上
位于org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:4
77)
位于org.openqa.selenium.htmlunit.HtmlUnitDriver.get(HtmlUnitDriver.java:4
66)
在mypkg.Klazz.execute(Klazz.java:15)
位于org.apache.tools.ant.UnknowneElement.execute(unknowneElement.java:292)
位于sun.reflect.GeneratedMethodAccessor4.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(delegatingmethodaccess
sorImpl.java:43)
位于java.lang.reflect.Method.invoke(Method.java:606)
位于org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
位于org.apache.tools.ant.Task.perform(Task.java:348)
位于org.apache.tools.ant.Target.execute(Target.java:435)
位于org.apache.tools.ant.Target.performTasks(Target.java:456)
位于org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
位于org.apache.tools.ant.Project.executeTarget(Project.java:1364)
在org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe
java:41)
位于org.apache.tools.ant.Project.executeTargets(Project.java:1248)
位于org.apache.tools.ant.Main.runBuild(Main.java:851)
位于org.apache.tools.ant.Main.startAnt(Main.java:235)
位于org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
位于org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
原因:java.lang.NullPointerException
位于java.util.Properties$LineReader.readLine(Properties.java:434)
位于java.util.Properties.load0(Properties.java:353)
加载(Properties.java:341)
位于org.cyberneko.html.HTMLEntities.load0(HTMLEntities.java:101)
网址:org.cyberneko.html.HTMLEntities(HTMLEntities.java:53)
... 33多
总时间:2秒

如果出现任何类加载困难,我会假设会发生
NoClassDefFoundError
ClassNotFoundException

ExceptionInInitializerError
通常不应该引起注意,因为它只说“嘿,程序员,初始化块内发生了异常”

有关初始化块的详细信息


因此,处理NPE将解决这个问题,但不幸的是,我无法访问可能导致此问题的代码。让我知道,我会编辑答案。

@Vlad Ilie感谢您的关注,现在问题已经解决了。。问题在于jar创建ant脚本。 用于创建jar的早期ant任务无法将类路径中的所有jar合并,因此。。。classnotfoundexception,这反过来导致ExceptionInInitializeError和NullPointerException

下面是一个固定的“jar”任务,它能够成功地将所有jar添加到类路径中

<target name="jar" depends="compile">       
        <jar destfile="${env.ANT_HOME}/lib/custom-task.jar" basedir="build/classes" >           
            <zipgroupfileset dir="${basedir}/libs/" includes="*.jar"/>      
        </jar>
    </target>


上面我使用了zipgroupfileset,它非常方便。

堆栈跟踪,请。@chrylis我已经用堆栈跟踪更新了我的原始帖子,请看一看。堆栈跟踪中需要有一个“原因”部分,其中包括触发ExceptionInInitializeError的异常。这就是全部痕迹吗?@Vlad Ilie我已经用它更新了上面的片段。实际上,它是由名为“Klazz.java”的类的行“driver.get()”抛出的,仍然没有“caused by”部分,您的跟踪中是否也省略了该部分?ExceptionInInitializer仅作为结果发生,原因是另一个异常。异常类型将非常有用(可能是一个简单的NPE),请记住接受您的回答,对于其他访问者