2011-09-17 56 views
3

這是我第一次嘗試編寫ANT腳本。這是使用Spring的簡單Hello World應用程序的build.xml。在將外部JAR包含在ant腳本中時出錯

<project name="MyFirstApp" default="jar" basedir=".."> 
    <property name="src" location="src"/> 
    <property name="build" location="build"/> 
    <property name="lib" location="/WebContent/WEB-INF/lib"/> 
    <path id="classpath-example"> 
     <fileset dir="${build}" includes="*.jar"/> 
    </path> 
    <target name="clean"> 
     <delete dir="build"/> 
    </target> 
    <target name="compile"> 
     <mkdir dir="build/classes"/> 
     <javac srcdir="${src}" destdir="build/classes" includeantruntime="false"/> 
     <classpath refid="classpath-example"/> 
    </target> 
    <target name="jar"> 
     <mkdir dir="build/jar"/> 
     <jar destfile="build/jar/MyFirstApp.jar" basedir="build/classes"/>   
    </target> 
    <target name="run"> 
     <java jar="build/jar/MyFirstApp.jar" fork="true"/> 
    </target> 
</project> 

當我嘗試運行此顯示以下錯誤消息。

問題:無法創建任務或輸入類路徑 原因:名稱未定義。 操作:檢查拼寫。 操作:檢查是否聲明瞭任何自定義任務/類型。 操作:檢查是否發生了任何/聲明。

有人可以告訴我該怎麼辦?

我第一次運行ANT腳本時,生成了JAR文件。當我嘗試再次運行它時,會出現下面提到的錯誤。

清潔: [刪除]刪除目錄F:\ SHIL \ JAVA \彈簧工作區\ myfirstapp1 \建立

compile: 
    [echo] compiling 
    [mkdir] Created dir: F:\shil\JAVA\Spring Workspace\myfirstapp1\build\classes 

    [javac] Compiling 5 source files to F:\shil\JAVA\Spring Workspace\myfirstapp 
1\build\classes 
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:4: package javax.servlet does not exist 
    [javac] import javax.servlet.ServletException; 
    [javac]     ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:5: package javax.servlet.http does not exist 
    [javac] import javax.servlet.http.HttpServlet; 
    [javac]      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:6: package javax.servlet.http does not exist 
    [javac] import javax.servlet.http.HttpServletRequest; 
    [javac]      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:7: package javax.servlet.http does not exist 
    [javac] import javax.servlet.http.HttpServletResponse; 
    [javac]      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:12: cannot find symbol 
    [javac] symbol: class HttpServlet 
    [javac] public class HelloWorldServlet extends HttpServlet { 
    [javac]          ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:26: cannot find symbol 
    [javac] symbol : class HttpServletRequest 
    [javac] location: class my.hello.servlet.HelloWorldServlet 
    [javac]  protected void doGet(HttpServletRequest request, HttpServletResp 
onse response) throws ServletException, IOException { 
    [javac]      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:26: cannot find symbol 
    [javac] symbol : class HttpServletResponse 
    [javac] location: class my.hello.servlet.HelloWorldServlet 
    [javac]  protected void doGet(HttpServletRequest request, HttpServletResp 
onse response) throws ServletException, IOException { 
    [javac]             ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:26: cannot find symbol 
    [javac] symbol : class ServletException 
    [javac] location: class my.hello.servlet.HelloWorldServlet 
    [javac]  protected void doGet(HttpServletRequest request, HttpServletResp 
onse response) throws ServletException, IOException { 
    [javac] 
        ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:33: cannot find symbol 
    [javac] symbol : class HttpServletRequest 
    [javac] location: class my.hello.servlet.HelloWorldServlet 
    [javac]  protected void doPost(HttpServletRequest request, HttpServletRes 
ponse response) throws ServletException, IOException { 
    [javac]       ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:33: cannot find symbol 
    [javac] symbol : class HttpServletResponse 
    [javac] location: class my.hello.servlet.HelloWorldServlet 
    [javac]  protected void doPost(HttpServletRequest request, HttpServletRes 
ponse response) throws ServletException, IOException { 
    [javac]              ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Hello 
WorldServlet.java:33: cannot find symbol 
    [javac] symbol : class ServletException 
    [javac] location: class my.hello.servlet.HelloWorldServlet 
    [javac]  protected void doPost(HttpServletRequest request, HttpServletRes 
ponse response) throws ServletException, IOException { 
    [javac] 
        ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:4: package javax.servlet does not exist 
    [javac] import javax.servlet.RequestDispatcher; 
    [javac]     ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:5: package javax.servlet does not exist 
    [javac] import javax.servlet.ServletException; 
    [javac]     ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:6: package javax.servlet.http does not exist 
    [javac] import javax.servlet.http.HttpServlet; 
    [javac]      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:7: package javax.servlet.http does not exist 
    [javac] import javax.servlet.http.HttpServletRequest; 
    [javac]      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:8: package javax.servlet.http does not exist 
    [javac] import javax.servlet.http.HttpServletResponse; 
    [javac]      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:15: cannot find symbol 
    [javac] symbol: class HttpServlet 
    [javac] public class WelcomeServlet extends HttpServlet { 
    [javac]         ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:29: cannot find symbol 
    [javac] symbol : class HttpServletRequest 
    [javac] location: class my.hello.servlet.WelcomeServlet 
    [javac]  protected void doGet(HttpServletRequest request, HttpServletResp 
onse response) throws ServletException, IOException { 
    [javac]      ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:29: cannot find symbol 
    [javac] symbol : class HttpServletResponse 
    [javac] location: class my.hello.servlet.WelcomeServlet 
    [javac]  protected void doGet(HttpServletRequest request, HttpServletResp 
onse response) throws ServletException, IOException { 
    [javac]             ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:29: cannot find symbol 
    [javac] symbol : class ServletException 
    [javac] location: class my.hello.servlet.WelcomeServlet 
    [javac]  protected void doGet(HttpServletRequest request, HttpServletResp 
onse response) throws ServletException, IOException { 
    [javac] 
        ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:36: cannot find symbol 
    [javac] symbol : class HttpServletRequest 
    [javac] location: class my.hello.servlet.WelcomeServlet 
    [javac]  protected void doPost(HttpServletRequest request, HttpServletRes 
ponse response) throws ServletException, IOException { 
    [javac]       ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:36: cannot find symbol 
    [javac] symbol : class HttpServletResponse 
    [javac] location: class my.hello.servlet.WelcomeServlet 
    [javac]  protected void doPost(HttpServletRequest request, HttpServletRes 
ponse response) throws ServletException, IOException { 
    [javac]              ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:36: cannot find symbol 
    [javac] symbol : class ServletException 
    [javac] location: class my.hello.servlet.WelcomeServlet 
    [javac]  protected void doPost(HttpServletRequest request, HttpServletRes 
ponse response) throws ServletException, IOException { 
    [javac] 
        ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:41: cannot find symbol 
    [javac] symbol : class RequestDispatcher 
    [javac] location: class my.hello.servlet.WelcomeServlet 
    [javac]    RequestDispatcher welcomeDispatcher = getServletContext(
).getRequestDispatcher("/Welcome.jsp"); 
    [javac]   ^
    [javac] F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\servlet\Welco 
meServlet.java:41: cannot find symbol 
    [javac] symbol : method getServletContext() 
    [javac] location: class my.hello.servlet.WelcomeServlet 
    [javac]    RequestDispatcher welcomeDispatcher = getServletContext(
).getRequestDispatcher("/Welcome.jsp"); 
    [javac]             ^
    [javac] Note: F:\shil\JAVA\Spring Workspace\myfirstapp1\src\my\hello\HelloWo 
rldApp.java uses or overrides a deprecated API. 
    [javac] Note: Recompile with -Xlint:deprecation for details. 
    [javac] 25 errors 

BUILD FAILED 
F:\shil\JAVA\Spring Workspace\myfirstapp1\ant\build.xml:19: Compile failed; see 
the compiler error output for details. 

Total time: 1 second 

爲什麼這不會發生的第一次?有人可以幫忙嗎?

回答

5

<classpath>裏面的compile目標應嵌套在<javac>元素內。

還值得一提的是,螞蟻(實際上大多數構建系統)的許多力量來自於聲明目標之間的依賴關係。在你的例子中,在沒有運行compile目標的情況下運行jar目標沒有任何意義,否則,沒有類文件需要jar - 或者更糟糕的是,手動運行jar,但忘記運行compile首先結束在你的JAR文件中的過期類。所以,jar目標應取決於compile目標。這樣,無論何時運行jar目標,任何更改的類都將自動首先編譯。同樣,run目標應取決於jar目標。

+0

或者你可以簡單地定義一個變量CLASSPATH目標外,像這樣。這更優雅。 RHT

+0

它看起來像OP試圖引用編譯依賴的預定義類路徑。 – dty

+0

非常感謝:)現在工作正常:) – meenakshi

0

使用classpathref屬性,而不是像這樣

<javac path="src" destdir="build/classes" classpathref="classpath-example"/>