2010-10-02 150 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"/> 
相關問題