2010-10-02 152 views
7

我试图编译其中进口我的包之一ActionFactory.java文件,RegisterAction.javaANT - 的javac编译失败是由于无法找到符号

这里是文件结构:

/COM/masatosan /动作/注册/ RegisterAction.java

/com/masatosan/redirector/ActionFactory.java

按照ANT输出,我觉得ANT找不到RegisterAction.java这是在ActionFactory.java

进口

当我在控制台上手动运行javac时,它会编译成功,所以这必须是ANT没有看到的一些类路径设置。

我知道我可以添加一些jar到ANT_HOME/lib但在我的情况下,ANT似乎无法找到ActionRegister.java,而不是jar或其他东西。任何人都可以帮我找出有什么问题吗?

Ant脚本

<project name="CompileMasatosan" default="main" 
    basedir="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan"> 
    <description> 
     masatosan compiler 
    </description> 

    <!-- this invokes all targets --> 
    <target name="main" depends="compileAll" /> 

    <!-- properties --> 
    <property name="srcMasatosan" 
     location="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan" /> 

    <property name="dest" 
    location="C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\WEB-INF\classes" /> 

    <property name="redirectorSrc" location="${srcMasatosan}\redirector" /> 

    <!-- complie --> 
    <target name="compileAll"> 
     <javac target="1.5" source="1.5" srcdir="${redirectorSrc}" destdir="${dest}" /> 
    </target> 

</project> 

环境变量

ANT_HOME=C:\apache-ant-1.8.1-bin\apache-ant-1.8.1 

CLASSPATH=C:\Program Files\Java\jre6\bin;C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib;C:\Program Files\Java\jre6\bin;C:\P 
rogram Files\Apache Software Foundation\Tomcat 6.0\lib\mail.jar;C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib;C:\Program F 
iles\Java\jre6\bin;C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan\actions\register; 

ActionFactory.java

package com.masatosan.redirector; 
import com.masatosan.actions.register.RegisterAction; 

public class ActionFactory { 
//some code here... 

} 

ANT输出

C:\apache-ant-1.8.1-bin\javac_masatosan\debug>ant 
Buildfile: C:\apache-ant-1.8.1-bin\javac_masatosan\debug\build.xml 

compileAll: 
    [javac] C:\apache-ant-1.8.1-bin\javac_masatosan\debug\build.xml:47: warning: 'includeantruntime' was not set, defaulting to build.s 
ysclasspath=last; set to false for repeatable builds 
    [javac] Compiling 4 source files to C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\WEB-INF\classes 
    [javac] C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan\redirector\ActionFactory.java:1 
5: cannot find symbol 
    [javac] symbol : class RegisterAction 
    [javac] location: package com.masatosan.actions.register 
    [javac] import com.masatosan.actions.register.RegisterAction; 
    [javac]         ^
    [javac] C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\head_first\src\com\masatosan\redirector\ActionFactory.java:2 
4: cannot find symbol 
    [javac] symbol : class RegisterAction 
    [javac] location: class com.masatosan.redirector.ActionFactory 
    [javac]    actions.put("POST/process_register.do", new RegisterAction()); 
    [javac]              ^
    [javac] 2 errors 

BUILD FAILED 
C:\apache-ant-1.8.1-bin\javac_masatosan\debug\build.xml:47: Compile failed; see the compiler error output for details. 

回答

10

它看起来像您指定只有一个“源路径”到“javac的” - 而不是两个。也许你应该做的

<target name="compileAll"> 
    <javac target="1.5" source="1.5" destdir="${dest}"> 
    <src path="${redirectorSrc}"/> 
    <src path="${srcMasatosan}"/> 
    </javac>  
</target> 
+0

对不起,反应迟缓,谢谢你,你的解决方案解决了这个问题。 – 2010-10-04 11:34:01

+1

错字:'..target =“1.5 source =”1.5 ...'? – Tshepang 2011-01-12 12:34:10

0
Make it point to your exact jar files directory where jars are present 
<path id="classpath"> 
<fileset dir="${main.jar}" includes="**/*.jar"/> 
<!-- <pathelement location="${src.dir}" />--> 
</path> 

----in my case jar files present in ---- 
<property name="main.jar"  value="jar"/> 
相关问题