0
votes

I am struggling with Ant these days, trying to make it driver my WebDriver tests. So far I got to the following build.xml ( blatantly copied from somewhere )

<property name="src" value="./src" />
<property name="lib" value="d:/apache-ant-1.8.4/lib/" />
<property name="bin" value="./bin/" />
<property name="report" value="./report" />
<path id="test.classpath">
    <pathelement location="${bin}" />
    <fileset dir="${lib}">
        <include name="**/*.jar" />
    </fileset>
</path>

<target name="init">
    <delete dir="${bin}" />
    <mkdir dir="${bin}" />
</target>

<target name="compile" depends="init">
    <javac source="1.6" srcdir="${src}" fork="true" destdir="${bin}" >
        <classpath>
            <pathelement path="${bin}">
            </pathelement>
            <fileset dir="${lib}">
                <include name="**/*.jar" />
            </fileset>
        </classpath>
    </javac>
</target>

<target name="exec" depends="compile">
    <delete dir="${report}" />
    <mkdir dir="${report}" />
        <mkdir dir="${report}/xml" />
    <junit printsummary="yes" haltonfailure="no">
        <classpath>
            <pathelement location="${bin}" />
            <fileset dir="${lib}">
                <include name="**/*.jar" />
            </fileset>
        </classpath>

        <test name="com.yourcompany.selenium.ccloop.tb6NoInterested" haltonfailure="no" todir="${report}/xml" outfile="TEST-result">
            <formatter type="xml" />
        </test>
    </junit>
    <junitreport todir="${report}">
        <fileset dir="${report}/xml">
            <include name="TEST*.xml" />
        </fileset>
        <report format="frames" todir="${report}/html" />
    </junitreport>
</target>

Now, when I run ant everything gets build fine, but the test does not run and I am getting the NoClassDefFoundError.

org/apache/http/HttpHost

java.lang.NoClassDefFoundError: org/apache/http/HttpHost at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:144) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:86) at com.yourcompany.selenium.ccloop.tb6NoInterested.setUp(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.apache.http.HttpHost at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) N/A

java.lang.NullPointerException at com.yourcompany.selenium.ccloop.tb6NoInterested.tearDown(Unknown Source)

Package name is com.yourcompany.selenium.ccloop Test name is tb6NoInterested

I have all the jars in ant lib folder ( the hamcrest, junit, selenium ones )

What am I doing wrong?

1

1 Answers

1
votes

It seems that httpcore from apache is not in the classpath.

org/apache/http/HttpHost is a class in that library.

I usually use findjar to find which jars contain classes, when I get a surprising NoClassDefFoundError.