在ant脚本中包含外部JAR时出错

这是我编写ANT脚本的第一次尝试。 这是我使用Spring的简单Hello World应用程序的build.xml。

                       

当我尝试运行此时,将显示以下错误消息。

问题:无法创建任务或键入类路径原因:名称未定义。 行动:检查拼写。 操作:检查是否已声明任何自定义任务/类型。 操作:检查是否已发生任何/声明。

有人可以告诉我该怎么办?

我第一次运行ANT脚本时,生成了JAR文件。 当我再次尝试运行它时,它会给出下面提到的错误。

clean:[delete]删除目录F:\ shil \ JAVA \ Spring Workspace \ myfirstapp1 \ build

 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 

为什么这不是第一次发生? 有人可以帮忙吗?

compile目标中的应嵌套在元素中。

值得注意的是,ant(以及大多数构建系统)的很多function来自于声明目标之间的依赖关系。 在你的例子中,没有先运行compile目标就运行jar目标没有任何意义,否则,没有类文件可以jar – 或者更糟糕的是,你将手动运行jar ,但忘记运行compile首先,最后是JAR文件中的过时类。 因此, jar目标应该依赖于compile目标。 这样,无论何时运行jar目标,任何更改的类都将首先自动编译。 同样, run目标应该取决于jar目标。

使用classpathref属性,就像这样