Подтвердить что ты не робот

Taskdef класс org.apache.catalina.ant.InstallTask ​​не может быть найден

В Eclipse я получаю 5 предупреждений для моего build.xml:

taskdef class.org.apache.catalina.ant.InstallTask cannot be found
taskdef class.org.apache.catalina.ant.ListTaskcannot be found
taskdef class.org.apache.catalina.ant.ReloadTaskcannot be found
taskdef class.org.apache.catalina.ant.StartTask cannot be found
taskdef class.org.apache.catalina.ant.StopTask cannot be found

Я установил следующие переменные системной среды (Windows 7)

ANT_HOME: C:\apache-ant-1.8.4
CATALINA_HOME: C:\apache-tomcat-7.0.29
JAVA_HOME: C:\Program Files\Java\jdk1.6.0_34
and have added %ANT_HOME%/bin to PATH

edit: Я также добавил catalina- ant.jar в C:\apache- ant -1.8.4\lib

Другие части кода:

<!-- We need the Catalina jars for Tomcat -->
<!--  * for other app servers - check the docs -->
<fileset dir="${appserver.lib}">
    <include name="catalina-ant.jar"/>
</fileset>
</path>

<taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="start" classname="org.apache.catalina.ant.StartTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>

Что не так?

4b9b3361

Ответ 1

Я думаю, что упоминание CATALINA_HOME не работает. Вам нужно поставить банки каталинии ant в класс Ant. В tomcat 7 для этой цели есть 4 банки, в то время как в более ранних версиях для этого была только одна банка. Пожалуйста, следуйте этой ссылке .

Как указано в ссылке,

Для начала убедитесь, что менеджер Tomcat настроен для использования Catalina- Ant. Убедитесь, что manager-script включен в роли для одного из пользователей в TOMCAT_HOME/conf/tomcat-users.xml. Для Пример:

<tomcat-users>
    <user name="admin" password="s3cr£t" roles="manager-gui,manager-script"/>
</tomcat-users>

Catalina- ant для Tomcat 6 был инкапсулирован в один JAR файл. Catalina- ant для Tomcat 7 требует четыре файла JAR. Один из TOMCAT_HOME/bin:

tomcat-juli.jar

и три из TOMCAT_HOME/lib:

catalina-ant.jar
tomcat-coyote.jar
tomcat-util.jar

Существует как минимум три способа сделать JAR доступными для Ant:

  • Скопируйте JAR в папку ANT_HOME/lib. Тогда Ant просто найдет их.
  • Скопируйте JAR в папку в вашем проекте, которую вы проверяете в своей системе управления версиями. Ant для этого требуется идентификатор пути:
<path id="catalina-ant-classpath">
   <fileset dir="${catalina-ant-dir}">
      <include name="catalina-ant.jar"/>
      <include name="tomcat-coyote.jar"/>
      <include name="tomcat-util.jar"/>
      <include name="tomcat-juli.jar"/>
   </fileset>
</path>

Где catalina-ant-dir - это каталог с JAR в. Таким образом, вы не нужно изменять установку Ant на каждой машине, которую вы создаете на. Получите доступ к JAR непосредственно с вашей установки Tomcat 7. Ant тогда требуется идентификатор пути, чтобы найти их:

<path id="catalina-ant-classpath">
    <fileset dir="${appserver.lib}">
           <include name="catalina-ant.jar"/>
           <include name="tomcat-coyote.jar"/>
           <include name="tomcat-util.jar"/>
        </fileset>
    <fileset dir="${appserver.home}/bin">
               <include name="tomcat-juli.jar"/>
    </fileset>
</path>

Где appserver.lib - это путь к директории libs Tomcat 7s и appserver.home - это путь к установленному каталогу верхнего уровня Tomcats. Таким образом, Tomcat 7 требуется на каждой коробке, на которой вы строите.

Мои личные предпочтения выше для 2.

Теперь, когда ваш Ant script может видеть JAR Catalina- ant, вам нужно расскажите, какие задачи доступны. Это больше всего, если не все задачи, доступные для Ant.

<taskdef name="catalina-deploy" classname="org.apache.catalina.ant.DeployTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-list" classname="org.apache.catalina.ant.ListTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-reload" classname="org.apache.catalina.ant.ReloadTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-findleaks" classname="org.apache.catalina.ant.FindLeaksTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-resources" classname="org.apache.catalina.ant.ResourcesTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-start" classname="org.apache.catalina.ant.StartTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-stop" classname="org.apache.catalina.ant.StopTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-undeploy" classname="org.apache.catalina.ant.UndeployTask" classpathref="catalina-ant-classpath"/>

Наконец, вам нужен набор задач, которые фактически выполняют работу. Хотя, как вы можете видеть выше, есть несколько задач, которые я имею в виду только следующие:

<target name = "stop-webapp">
       <catalina-stop url="${tomcat.manager.url}"
                         username="${tomcat.username}"
                         password="${tomcat.password}"
                         path="/${webapp.name}"
                         failonerror="false"/>
</target>

<target name = "start-webapp">
    <catalina-start url="${tomcat.manager.url}"
                       username="${tomcat.username}"
                       password="${tomcat.password}"
                       path="/${webapp.name}"/>
</target>

<target name = "undeploy-webapp">
    <catalina-undeploy url="${tomcat.manager.url}"
                          username="${tomcat.username}"
                          password="${tomcat.password}"
                          path="/${webapp.name}"
                          failonerror="false"/>
</target>

<target name = "deploy-webapp">
    <catalina-deploy url="${tomcat.manager.url}"
                        username="${tomcat.username}"
                        password="${tomcat.password}"
                        path="/${webapp.name}"
                        war="file:${war.file}"/>
</target>

tomcat.manager.url - это URL, в котором живет менеджер Tomcat. Это другой из изменений от Tomcat 6 до Tomcat 7. Обычно это будет be: http://:8080/manager/text.

Tomcat.username и Tomcat.password - имя пользователя и пароль для менеджера Tomcat.

webapp.name - это имя приложения Tomcat, которое вы развёртывание.

war.file - это путь к приложению Tomcat, которое вы развертываете. WAR файл.

Ответ 2

В tomcat 7 InstallTask ​​заменяется на DeployTask.

измените свое объявление, например

old

<taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
    <classpath refid="catalina-ant-classpath"/>
</taskdef>

с

 <taskdef name="install" classname="org.apache.catalina.ant.DeployTask"> 
  <classpath refid="catalina-ant-classpath"/> 
 </taskdef>

Ответ 3

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

<fileset dir="${appserver.home}/common/lib">
<include name="servlet*.jar"/>
</fileset> 

Я верю, что у вас могут быть указанные выше настройки в файле build.xml. Пожалуйста, измените ${appserver.home} в каталог, содержащий установку tomcat

<fileset dir="C:/Program Files/Apache Software Foundation/Tomcat 5.5/common/lib">
<include name="servlet*.jar"/>
</fileset> 

Ответ 4

В tomcat 7 org.apache.catalina.ant содержит набор задач, которые могут использоваться для взаимодействия с приложением Manager для развертывания, развертывания, переустановки, перезагрузки, запуска и остановки веб-приложений из работающего экземпляра Tomcat. Замена InstallTask ​​с помощью DeployTask решит проблему сборки.

<taskdef name="install" classname="org.apache.catalina.ant.DeployTask">
        <classpath refid="catalina-ant-classpath"/>
    </taskdef>
    <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
        <classpath refid="catalina-ant-classpath"/>`enter code here`
    </taskdef>
    <taskdef name="list" classname="org.apache.catalina.ant.ListTask">
        <classpath refid="catalina-ant-classpath"/>
    </taskdef>
    <taskdef name="start" classname="org.apache.catalina.ant.StartTask">
        <classpath refid="catalina-ant-classpath"/>
    </taskdef>
    <taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
        <classpath refid="catalina-ant-classpath"/>
    </taskdef>

Ответ 5

Если вы используете затмения, вам нужно изменить местоположение ant_home, выполнив следующие шаги: перейти в окно > prefrances > Ant > runtime > classpath > AntHome нажмите на кнопку anthome и укажите путь к каталогу anthome.

и для решения проблемы u необходимо скопировать каталину ant.jar внутри папки anthome/lib

Спасибо, Шарада

Ответ 6

Попробуйте следующее: оно решит вашу проблему:

1) Click Eclipse menu Window > Preferences
2) Click Ant > Runtime
3) Under Classpath tab, select Ant Home Entries and click button Add External JARs
4) Browse and open $ECLIPSE_HOME/plugins/org.apache.ant_myscrum/lib/catalina-ant.jar
5) Click Apply and OK button

Следуйте инструкциям № 3

Следуйте инструкциям № 4