ошибка при включении внешних JAR-файлов в скрипт ant - PullRequest
3 голосов
/ 17 сентября 2011

Это моя первая попытка написания сценария ANT. Это мой build.xml для простого приложения Hello World, использующего Spring.

<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>

когда я пытаюсь запустить это, появляется следующее сообщение об ошибке.

Проблема: не удалось создать задачу или ввести classpath Причина: имя не определено. Действие: Проверьте орфографию. Действие: Убедитесь, что все пользовательские задачи / типы были объявлены. Действие: Убедитесь, что какие-либо / объявления были выполнены.

Может кто-нибудь сказать, пожалуйста, что делать?

При первом запуске сценария ANT был сгенерирован файл JAR. Когда я попытался запустить его снова, он выдает следующую ошибку.

чистый: [удалить] Удаление каталога 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

почему это не произошло в первый раз? Может кто-нибудь, пожалуйста, помогите?

Ответы [ 2 ]

5 голосов
/ 17 сентября 2011

<classpath> внутри вашей compile цели должно быть вложено в элемент <javac>.

Стоит также отметить, что большая сила муравья (и, действительно, большинство систем сборки)происходит от объявления зависимостей между целями.В вашем примере не имеет смысла запускать цель jar без предварительного запуска цели compile, в противном случае нет файлов классов для jar - или, что еще хуже, вы запустите jar вручную, но не забудьте сначала запустить compile и получить устаревшие классы в вашем JAR-файле.Таким образом, цель jar должна зависеть от цели compile.Таким образом, всякий раз, когда вы запускаете цель jar, любой измененный класс будет автоматически компилироваться первым.Точно так же цель run должна зависеть от цели jar.

0 голосов
/ 17 сентября 2011

Вместо этого используйте атрибут classpathref, как этот

<javac path="src" destdir="build/classes" classpathref="classpath-example"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...