【问题标题】:Error while running build.xml file运行 build.xml 文件时出错
【发布时间】:2014-04-23 21:48:00
【问题描述】:

我是 ANT 构建的新手,在尝试运行下面提到的构建文件时遇到了一些错误。我已经在 lib 文件夹中添加了所有 jar 文件。但我仍然面临这些错误。我想我在类路径区域犯了一些其他错误。

这里是 build.xml

<project name="ant_testing" default="compile" basedir=".">

  <property name="jar" value="${basedir}/classes"/>
  <property name="lib" value="${basedir}/lib"/>
  <property name="src" value="${basedir}/src"/>
  <property name="classes" value="${basedir}/classes"/>

  <target name="setClassPath" unless="test.classpath">
    <path id="testcompile">
      <pathelement location="${jar}"/>
      <fileset dir="${lib}">
        <include name="*.jar"/>
      </fileset>
    </path>
  </target>

  <target name="compile" depends="setClassPath">
    <javac includeantruntime="false" srcdir="${src}" destdir="${classes}" includes="**/*.java" listfiles="yes"/>
    <classpath refid="testcompile"/>
  </target>

  <target name="run" depends="compile">
    <java>
      <classpath path="classes"/>
    </java>
  </target>

</project>

这是错误列表

Buildfile: D:\sakthi\JUNIT\ant_testing\build.xml
setClassPath:
compile:
[javac] Compiling 1 source file to D:\sakthi\JUNIT\ant_testing\classes
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:3: error: package org.testng.annotations does not exist
[javac] import org.testng.annotations.BeforeClass;
[javac]                              ^
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:4: error: package org.testng.annotations does not exist
[javac] import org.testng.annotations.BeforeSuite;
[javac]                              ^
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:5: error: package org.testng.annotations does not exist
[javac] import org.testng.annotations.BeforeTest;
[javac]                              ^
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:6: error: package org.testng.annotations does not exist
[javac] import org.testng.annotations.DataProvider;
[javac]                              ^
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:7: error: package org.testng.annotations does not exist
[javac] import org.testng.annotations.Test;
[javac]                              ^
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:8: error: package com.thoughtworks.selenium does not exist
[javac] import com.thoughtworks.selenium.SeleneseTestBase;
[javac]                                 ^
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:12: error: package jxl does not exist
[javac] import jxl.*;
[javac] ^
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:14: error: cannot find symbol
[javac] public class ant_testing extends SeleneseTestBase{
[javac]                                  ^
[javac]   symbol: class SeleneseTestBase
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:18: error: cannot find symbol
[javac]     @BeforeSuite
[javac]      ^
[javac]   symbol:   class BeforeSuite
[javac]   location: class ant_testing
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:29: error: cannot find symbol
[javac]     @BeforeTest     
[javac]      ^
[javac]   symbol:   class BeforeTest
[javac]   location: class ant_testing
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:45: error: cannot find symbol
[javac]     @DataProvider(name = "DP1")
[javac]      ^
[javac]   symbol:   class DataProvider
[javac]   location: class ant_testing
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:53: error: cannot find symbol
[javac]     @Test (dataProvider = "DP1")
[javac]      ^
[javac]   symbol:   class Test
[javac]   location: class ant_testing
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:74: error: cannot find symbol
[javac]             Workbook workbook = Workbook.getWorkbook(new File(xlFilePath));
[javac]             ^
[javac]   symbol:   class Workbook
[javac]   location: class ant_testing
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:74: error: cannot find symbol
[javac]             Workbook workbook = Workbook.getWorkbook(new File(xlFilePath));
[javac]                                 ^
[javac]   symbol:   variable Workbook
[javac]   location: class ant_testing
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:75: error: cannot find symbol
[javac]             Sheet sheet = workbook.getSheet(sheetName);
[javac]             ^
[javac]   symbol:   class Sheet
[javac]   location: class ant_testing
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:77: error: cannot find symbol
[javac]             Cell tableStart=sheet.findCell(tableName);
[javac]             ^
[javac]   symbol:   class Cell
[javac]   location: class ant_testing
[javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:80: error: cannot find symbol
[javac]             Cell tableEnd= sheet.findCell(tableName, startCol+1,startRow+1, 100, 64000,  false);              
[javac]             ^
[javac]   symbol:   class Cell
[javac]   location: class ant_testing
[javac] 17 errors

BUILD FAILED
D:\sakthi\JUNIT\ant_testing\build.xml:19: Compile failed; see the compiler error output for details.
Total time: 611 milliseconds

帮我解决这个问题 :( . 在此先感谢:)

【问题讨论】:

    标签: java xml ant


    【解决方案1】:

    你的编译在它的类路径上没有 jars。以下是您声明 javac 任务的方式:

    <javac includeantruntime="false" srcdir="${src}" destdir="${classes}" includes="**/*.java" listfiles="yes"/>
    

    尝试以下简化的构建文件:

    <project name="ant_testing" default="compile" basedir=".">
    
      <property name="build.dir"   location="build"/>
      <property name="lib.dir"     location="lib"/>
      <property name="src.dir"     location="src"/>
      <property name="classes.dir" location="${build.dir}/classes"/>
    
      <path id="compile.path">
        <fileset dir="${lib.dir}" includes="*.jar"/>
      </path>
    
      <target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="compile.path" includeantruntime="false"/>
      </target>
    
      <target name="run" depends="compile">
        <java .. ..>
          <classpath>
            <path refid="compile.path"/>
            <pathelement location="${classes.dir}"/>
          </classpath>
        </java>
      </target>
    </project>
    

    注意事项:

    • 编译在顶部声明的类路径以及属性等其他项
    • 属性使用“位置”属性。专为文件路径名设计
    • Javac 任务使用 classpathref 来接受它的类路径
    • Java 任务有一个类路径元素,由现有路径和目录文件路径元素组成。

    【讨论】:

    • 嗨,非常感谢@Mark O'connor ...但是现在我遇到了另一个错误。 [javac] D:\sakthi\JUNIT\ant_testing\src\comm\code\ant_testing.java:79:错误:接口Sheet中的方法findCell不能应用于给定类型; [javac] 单元格 tableEnd= sheet.findCell(tableName, startCol+1,startRow+1, 100, 64000, false); [javac] ^ [javac] required: String [javac] found: String,int,int,int,int,boolean [javac] 原因:实际参数列表和形式参数列表长度不同 [javac] 1 个错误
    • @Sakthivel 这是一个新问题。如果没有更多细节,看起来您正在调用具有错误参数类型的方法。
    【解决方案2】:

    您没有包含org.testng.annotations.BeforeTest in classpath 的罐子。只需仔细检查 jar 是否在构建阶段的类路径中(取决于您正在执行的 ant 目标)与否。我猜你的情况是${basedir}/lib

    【讨论】:

    • 我已经在 basedir/lib 位置添加了所有的 jar 文件。我也检查了一遍。对于org.testng.annotations.BeforeTest,其对应的testng-5.0.jar也在项目内的LIB文件夹中
    猜你喜欢
    • 2015-01-16
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2014-06-24
    • 2016-11-22
    • 2016-01-19
    • 1970-01-01
    相关资源
    最近更新 更多