2014-10-28 263 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

相關問題