taskdef类org.apache.catalina.ant.installtask

yws3nbqq  于 2021-07-09  发布在  Java
关注(0)|答案(6)|浏览(479)

在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

我已经设置了以下系统环境变量(Windows7)

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>

怎么了?

ax6ht2ek

ax6ht2ek1#

在tomcat7中,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>
qcuzuvrc

qcuzuvrc2#

我猜你可能要做这个改变,因为你的问题没有更多的细节

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

vlurs2pr3#

如果您使用的是eclipes,那么您需要按照以下步骤更改您的ant\u主位置,导航到window>prefrances>ant>runtime>classpath>anthome单击anthome按钮并提供anthome目录路径。
为了解决这个问题,你需要将catalina-ant.jar复制到anthome/lib文件夹中
谢谢,沙拉德

xfb7svmp

xfb7svmp4#

在Tomcat7中,org.apache.catalina.ant包含一组任务,这些任务可用于与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>
vcirk6k6

vcirk6k65#

我认为仅仅提到卡塔琳娜的家是行不通的。您需要将catalina ant jar放到ant的类路径中。在tomcat7中,有4个jar用于此目的,而在早期版本中只有一个jar用于此目的。请点击此链接。
从链接中引用,
首先,确保配置tomcat管理器供catalinaant使用。确保 manager-script 包含在中某个用户的角色中 TOMCAT_HOME/conf/tomcat-users.xml . 例如:

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

用于tomcat6的catalinaant被封装在一个jar文件中。catalinaant for tomcat7需要四个jar文件。一个来自 TOMCAT_HOME/bin :

tomcat-juli.jar

三个来自 TOMCAT_HOME/lib :

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

至少有三种方法可以让ant使用jar:
把jar复制到盒子里 ANT_HOME/lib 文件夹。然后蚂蚁就会找到它们。
将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安装。直接从tomcat7安装访问jar。然后,ant需要一个路径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是Tomcat7的lib目录的路径,并且 appserver.home 是tomcat的顶级安装目录的路径。这样,您构建的每个框上都需要tomcat7。
我个人喜欢上面的2个。
现在,您的ant脚本可以看到catalina ant jars,您需要告诉它哪些任务可用。这些是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 manager所在的url。这是从tomcat6到tomcat7的另一个变化。通常是: `http://:8080/manager/text` . `Tomcat.username` 以及 `Tomcat.password` 是tomcat管理器的用户名和密码。 `webapp.name` 是您正在部署的tomcat应用程序的名称。 `war.file` 是您正在部署的tomcat应用程序的war文件的路径。
dm7nw8vv

dm7nw8vv6#

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

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


相关问题