18

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>

どうしたの?

4

6 に答える 6

66

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>
于 2012-12-13T06:26:49.373 に答える
22

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

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

まず、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>

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

tomcat-juli.jar

と からの 3 つTOMCAT_HOME/lib:

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

JAR を Ant で使用できるようにするには、少なくとも 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>

JAR を含むディレクトリはどこcatalina-ant-dirにありますか。このように、構築するすべてのマシンで 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 スクリプトに伝える必要があります。これらは、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.urlTomcat マネージャが存在する URL です。これは、Tomcat 6 から Tomcat 7 への別の変更点です。通常、これは次のようになりますhttp://:8080/manager/text

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

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

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

于 2012-08-25T13:41:10.493 に答える
4

tomcat 7 では、org.apache.catalina.ant に一連の Task が含まれており、これを使用して 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>
于 2014-06-29T22:13:09.040 に答える
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> 
于 2012-08-25T13:43:15.153 に答える
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

指示3に従ってください

指示4番に従ってください

于 2015-07-28T03:43:23.050 に答える
1

eclipes を使用している場合は、次の手順に従って ant_home の場所を変更する必要があります。window>prefrances>Ant>runtime>classpath>AntHome に移動し、anthome ボタンをクリックして、anthome ディレクトリ パスを指定します。

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

ありがとう、シャラド

于 2013-08-11T09:51:16.840 に答える