找不到taskdef类org.apache.catalina.ant.InstallTask

时间:2012-08-25 13:24:48

标签: java eclipse tomcat ant warnings

在Eclipse中,我的build.xml有5个警告:

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

编辑:我还将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>

怎么了?

6 个答案:

答案 0 :(得分:64)

在tomcat 7中,InstallTask​​被DeployTask替换。

更改您的声明,如

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

答案 1 :(得分:21)

我认为只提到CATALINA_HOME不起作用。你需要把catalina-ant罐子放到Ant的类路径上。在tomcat 7中,为此目的有4个罐子,而在早期版本中只有一个罐子。请关注此link

引自链接,

  

首先,确保配置Tomcat管理器以供使用   卡特琳娜 - 蚂蚁。确保角色中包含manager-script   对于TOMCAT_HOME/conf/tomcat-users.xml中的某个用户。对于   例如:

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

Tomcat 6的Catalina-Ant封装在一个JAR文件中。   用于Tomcat 7的Catalina-Ant需要四个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需要路径ID才能找到它们:
  •   
<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安装   上。直接从Tomcat 7安装访问JAR。蚂蚁然后   需要路径ID才能找到它们:

<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是Tomcat 7的lib目录和路径   appserver.home是Tomcat顶级安装目录的路径。   这样,你构建的每个盒子都需要Tomcat 7。

     

我个人的偏好是2以上。

     

现在您的Ant脚本可以看到您需要的Catalina-Ant JAR   告诉它可以使用哪些任务。这些是大多数,如果不是全部的话   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是Tomcat管理员所在的URL。这是   从Tomcat 6到Tomcat 7的另一个变化。通常会这样   是:http://:8080/manager/text

     

Tomcat.usernameTomcat.password是用户名和密码   对于Tomcat经理。

     

webapp.name是您所在的Tomcat应用程序的名称   展开。

     

war.file是您正在部署WAR的Tomcat应用程序的路径   文件。

答案 2 :(得分:4)

猜猜您可能需要进行此更改,因为您的问题中没有更多详细信息

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

答案 3 :(得分:4)

在tomcat 7中,org.apache.catalina.ant包含一组Task,可用于与Manager应用程序交互,以从正在运行的Tomcat实例部署,取消部署,列出,重新加载,启动和停止Web应用程序。 用DeployTask替换InstallTask​​将解决构建问题。

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

答案 4 :(得分:1)

如果您正在使用eclipes,则需要按照以下步骤更改您的ant_home位置, 导航到窗口&gt; prefrances&gt; Ant&gt; runtime&gt; classpath&gt; AntHome 点击anthome按钮并提供你的anthome目录路径。

并解决你的问题你需要在anthome / lib文件夹中复制catalina-ant.jar

谢谢, 沙拉德帕

答案 5 :(得分:1)

尝试以下方法,它将解决您的问题:

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

Follow the instruction no.3

Follow the instruction no.4