web-dev-qa-db-ja.com

taskdefクラスorg.Apache.catalina.ant.InstallTask​​が見つかりません

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>

どうしましたか?

18
Arvin

CATALINA_HOMEについてのみ言及しても機能しないと思います。 Antのクラスパスにcatalina-ant jarを配置する必要があります。 Tomcat 7では、この目的のために4つのjarがありましたが、以前のバージョンでは、このためのjarは1つしかありませんでした。 リンク に従ってください。

リンクから引用したように、

まず、TomcatマネージャーがCatalina-Antで使用できるように構成されていることを確認します。 manager-scriptTomcat_HOME/conf/Tomcat-users.xmlのユーザーの1人のロールに含まれていることを確認してください。例えば:

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

Catalina-Ant for Tomcat 6は、単一のJARファイル内にカプセル化されました。 Catalina-Ant for Tomcat 7には4つのJARファイルが必要です。 Tomcat_HOME/binからの1つ:

Tomcat-juli.jar

Tomcat_HOME/libからの3つ:

catalina-ant.jar
Tomcat-coyote.jar
Tomcat-util.jar

AntでJARを使用できるようにするには、少なくとも3つの方法があります。

  • 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にアクセスします。次に、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は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への変更のもう1つです。通常、これはhttp://:8080/manager/textになります。

Tomcat.usernameおよびTomcat.passwordは、Tomcatマネージャーのユーザー名とパスワードです。

webapp.nameは、デプロイするTomcatアプリケーションの名前です。

war.fileは、デプロイするTomcatアプリケーションのWARファイルのパスです。

22
vikas

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>
65
Rais Alam

あなたの質問にはこれ以上の詳細がないので、あなたはこの変更をしなければならないかもしれないと思います

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

Tomcat 7では、org.Apache.catalina.antには、Managerアプリケーションと対話して、実行中のTomcatのインスタンスからWebアプリケーションをデプロイ、アンデプロイ、リスト、リロード、開始、停止するために使用できる一連のタスクが含まれています。 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>
4
user3788570

次のことを試してください。問題が解決します。

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

1
SeokKuan

Eclipseを使用している場合は、以下の手順に従ってant_homeの場所を変更する必要があります。ウィンドウ> prefrances> Ant>ランタイム>クラスパス> AntHomeに移動し、anthomeボタンをクリックして、anthomeディレクトリパスを指定します。

ur問題を解決するには、anthome/libフォルダー内にcatalina-ant.jarをコピーする必要があります

ありがとう、Sharad

1
sharad-garg