我有如下的目录结构: testant 
  -src 
    -my 
      -example 
          -ant 
            Calculator.java 
  -test 
    -my 
      -example 
          -ant 
            TestCalculator.java 
其中Calculator.java的代码如下: 
package my.example.ant; 
public class Calculator 

    public double add(double number1,double number2) 
    { 
        return number1+number2; 
    } 
    public double sub(double number1,double number2) 
    { 
        return number1-number2; 
    } 
    public double mul(double number1,double number2) 
    { 
        return number1*number2; 
    } 

TestCalculator.java中代码如下: 
package my.example.ant; 
import static org.junit.Assert.*; 
import org.junit.*; 
public class TestCalculator{ 
@Test 
public void testAdd(){ 
Calculator calc=new Calculator(); 
double result=calc.add(10,20); 
assertEquals(30.0,result,0); 


我无法编译TestCalculator,总是提示我Calculator这个标识符找不到,请教各位,这是怎么回事? 
这个源代码和测试代码分开在不同的目录,但是包路径相同,为什么总是编译不过呢?
我是用ant来编译的,build.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="compiletest" basedir=".">
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="build" value="lib"/>
<property name="hello_jar" value="hello.jar"/>
<property name="test" value="test"/>
<property name="testdest" value="testclasses"/> <target name="init">
<mkdir dir="${testdest}"/>
<mkdir dir="${dest}"/>
<mkdir dir="${build}"/>
</target> <target name="compile" depends="init">
<javac srcdir="${src}"
            destdir="${dest}"/>
</target> <target name="compiletest" depends="compile">
<javac srcdir="${test}"
destdir="${testdest}"/>
</target> <target name="build" depends="compile">
<jar jarfile="${build}/${hello_jar}"
        basedir="${dest}"/>
</target>

<target name="run" depends="build">
<java classname="my.example.ant.HelloWorld"
classpath="${dest}"
/>
</target> <target name="clean">
<delete dir="${dest}"/>
<delete dir="${build}"/>
<delete dir="${testdest}"/>
</target> <target name="rerun" depends="clean,run">
<ant target="clean"/>
<ant target="run"/>
</target>
</project>总是提示我在TestCalculator中找不到Calculator。ant后的提示如下:E:\anttest>ant
Buildfile: build.xmlinit:
    [mkdir] Created dir: E:\anttest\testclasses
    [mkdir] Created dir: E:\anttest\classes
    [mkdir] Created dir: E:\anttest\libcompile:
    [javac] Compiling 1 source file to E:\anttest\classescompiletest:
    [javac] Compiling 1 source file to E:\anttest\testclasses
    [javac] E:\anttest\test\my\example\ant\TestCalculator.java:7: 找不到符号
    [javac] 符号: 类 Calculator
    [javac] 位置: 类 my.example.ant.TestCalculator
    [javac]             Calculator calc=new Calculator();
    [javac]             ^
    [javac] E:\anttest\test\my\example\ant\TestCalculator.java:7: 找不到符号
    [javac] 符号: 类 Calculator
    [javac] 位置: 类 my.example.ant.TestCalculator
    [javac]             Calculator calc=new Calculator();
    [javac]                                 ^
    [javac] 2 错误BUILD FAILED
E:\anttest\build.xml:23: Compile failed; see the compiler error output for detai
ls.Total time: 1 second

解决方案 »

  1.   

    试试这个
    <?xml version="1.0" encoding="UTF-8" ?> 
    <project name="HelloWorld" default="compiletest" basedir="."> 
    <property name="src" value="src"/> 
    <property name="dest" value="classes"/> 
    <property name="build" value="lib"/> 
    <property name="hello_jar" value="hello.jar"/> 
    <property name="test" value="test"/> 
    <property name="testdest" value="testclasses"/> <target name="init"> 
    <mkdir dir="${testdest}"/> 
    <mkdir dir="${dest}"/> 
    <mkdir dir="${build}"/> 
    </target> <target name="compile" depends="init"> 
    <javac srcdir="${src}" 
                destdir="${dest}"/> 
    </target> <target name="compiletest" depends="compile"> 
    <javac srcdir="${test}" 
    destdir="${dest}"/> 
    </target> <target name="build" depends="compile"> 
    <jar jarfile="${build}/${hello_jar}" 
            basedir="${dest}"/> 
    </target> <target name="run" depends="build"> 
    <java classname="my.example.ant.HelloWorld" 
    classpath="${dest}" 
    /> 
    </target> <target name="clean"> 
    <delete dir="${dest}"/> 
    <delete dir="${build}"/> 
    <delete dir="${testdest}"/> 
    </target> <target name="rerun" depends="clean,run"> 
    <ant target="clean"/> 
    <ant target="run"/> 
    </target> 
    </project> 
      

  2.   

    你仅仅只是把test下的文件编译后放到和src文件编译后的同一个目录下,这样就成功了,为什么呢?
      

  3.   

    还是刚刚那个帖子  class文件要放在一个地方才可以读到
    你把test放到testclass 把src放到class他们之间肯定不能互相读到  所以就出现了那个错误