2014-10-28 6 views
1

을 던지고있다 :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"); 
} 
라는 이름의 프로젝트가 " 테스트 프로젝트"및 사용 " libs가있다 일식에서

"폴더 (ant.jar, selenium-server-standalone-2.44.0.jar)가 클래스 경로에 추가됩니다. 이클립스에서 코드를 실행하면 잘 동작하지만 개미 작업으로 실행되는 동안 java.lang.ExceptionInInitializerError가 발생한다. 다음은 % ant_home % \ lib 폴더에 넣어야하는 jar (이름이 custom-task.jar)를 생성하는 build.xml 스 니펫입니다.

<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의 원인이 일부 누락 된 클래스 파일을 결과, 위의 "항아리"작업을 통해 단지를 만드는 동안하지 클래스 경로에 제대로 추가 외부 항아리/클래스가 될 수 있습니다. 이것에 대한 도움을 주셔서 감사합니다. , 나는 NoClassDefFoundError 또는 ClassNotFoundException

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

+0

@chrylis 스택 추적으로 원래 게시물을 업데이트했습니다. 한번보세요. – Som

+0

Stacktrace에는 ExceptionInInitializerError를 트리거하는 Exception을 포함하는 "인해 발생한"부분이 있어야합니다. 이 모든 것이 추적입니까? –

답변

1

어떤 클래스 로딩 문제가 있었다 경우, :

아래의 스택 추적입니다 "프로그래머, 초기화 블록 내부에서 예외가 발생했습니다"라고만되어 있기 때문에

초기화 블록에 대한 추가 정보 here

따라서 NPE를 처리하면 문제가 해결되지만 유감스럽게도이 문제를 일으킬 수있는 코드에는 액세스 할 수 없습니다. 알려 주시면 답변을 편집하겠습니다.

1

@Vlad Ilie 감사합니다. 한 번 해보았습니다. 문제가 해결되었습니다. 문제는 jar creation ant script입니다. 항아리 생성을위한 이전 개미 작업은 클래스 경로의 모든 항아리를 모으고 결국 classnotfoundexception으로 인해 ExceptionInInitializerError 및 NullPointerException이 발생했습니다.

다음은 클래스 경로의 모든 병을 성공적으로 추가 할 수있는 고정 "병"작업입니다.

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

위의 예는 zipgroup 파일 세트를 사용하여 매우 편리합니다.

+0

다른 방문자에게 답을 수락하십시오. –