2014-10-28 261 views
1

我写它使用下面的代码的Ant任务:HtmlUnitDriver抛出java.lang.ExceptionInInitializerError

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

     HtmlUnitDriver driver = new HtmlUnitDriver(); 
     driver.get("file:///C:/sample/alltests-fails.html"); 
} 

在名为eclipse的项目是“测试项目”和使用“库“”包含罐子的文件夹(ant.jar,selenium-server-standalone-2.44.0.jar)将被添加到类路径中。如果我在Eclipse中运行代码,它工作正常,但在作为ant任务运行时会抛出java.lang.ExceptionInInitializerError。下面是build.xml片段,用于创建jar文件(名为custom-task.jar),该文件需要放在%ant_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> 

可能无法在类路径正确添加,同时通过“罐子”任务创建罐子上面,导致一些缺失的类文件引起的ExceptionInInitializerError外部罐/班。 提前感谢您对此的任何帮助。下面

是堆栈跟踪:

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 
+0

堆栈跟踪,请。 – chrylis 2014-10-28 10:30:32

+0

@chrylis我用堆栈跟踪更新了我原来的帖子,请看看。 – Som 2014-10-28 11:05:18

+0

需要在堆栈中追踪“由...引起”部分,其中包括触发ExceptionInInitializerError的异常。这是完整的痕迹吗? – 2014-10-28 13:01:37

回答

1

应该有过任何类加载困难,我会承担NoClassDefFoundErrorClassNotFoundException会发生

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

更多关于初始化块here

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

1

@Vlad Ilie谢谢你看看,现在解决了它。问题是用jar创建ant脚本。 创建jar的早期ant任务不能将类路径中的所有jar放置并导致... classnotfoundexception反过来导致ExceptionInInitializerError和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非常方便。

+0

请记住接受您的答案,为其他访客 – 2015-01-07 13:52:01

相关问题