7

絶望的に時代遅れの公式の春のチュートリアルの頭または尾をまだ作ろうとしています。

今回は、件名のエラーです。

c:\Users\mkumpan\Projects\Spring testing\build.xml:152: java.lang.NoClassDefFoundError: org/apache/tomcat/util/codec/binary/Base64
<stack trace dump omitted>

このクラスは、実際には tomcat-util.jar に含まれています。

bash-3.1$ pwd
/c/Program Files/Tomcat/lib
bash-3.1$ jar -tf ./tomcat-util.jar | grep Base64
org/apache/tomcat/util/codec/binary/Base64.class

そして、私はそれをbuild.xmlに含めたと確信しています:

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

私はより明確にしようとさえしました:

<fileset dir="C:\Program Files\Tomcat\lib\" includes="tomcat-util.jar">

Tomcat 関連のターゲットを実行しようとするたびに、そのメッセージが表示されます。おそらく、誰かが一連の調査を提案できますか?

Google は関連するものを提供していないようです。

更新: 以下に提供される完全なマスター クラスパス リファレンス。

<path id="master-classpath">
    <fileset dir="${web.dir}/WEB-INF/lib">
        <include name="*/*.jar"/>
    </fileset>

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

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

    <pathelement path="${build.dir}"/>
</path>
4

5 に答える 5

4

必要なターゲットに間違ったパスリファレンスが使用されていました。必要なターゲットへのパスが含まれていませんでしtomcat-util.jarた。

正しい方向への製品を提供してくれた @akostadinov に敬意を表します。

于 2013-09-26T13:24:27.043 に答える
4

build.xml および build.properties で次の tomcat 関連のエントリを使用する場合、ant デプロイメントは tomcat 7 以降で機能するはずです。

<!-- ============================================================== -->
<!-- Tomcat tasks - remove these if you don't have Tomcat installed -->
<!-- ============================================================== -->

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

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

<target name="install" description="Install application in Tomcat">
    <install url="${tomcat.manager.url}"
             username="${tomcat.manager.username}"
             password="${tomcat.manager.password}"
             path="/${name}"
             war="${name}"/>
</target>

<target name="reload" description="Reload application in Tomcat">
    <reload url="${tomcat.manager.url}"
             username="${tomcat.manager.username}"
             password="${tomcat.manager.password}"
             path="/${name}"/>
</target>

<target name="start" description="Start Tomcat application">
    <start url="${tomcat.manager.url}"
             username="${tomcat.manager.username}"
             password="${tomcat.manager.password}"
             path="/${name}"/>
</target>

<target name="stop" description="Stop Tomcat application">
    <stop url="${tomcat.manager.url}"
             username="${tomcat.manager.username}"
             password="${tomcat.manager.password}"
             path="/${name}"/>
</target>

<target name="list" description="List Tomcat applications">
    <list url="${tomcat.manager.url}/text"
             username="${tomcat.manager.username}"
             password="${tomcat.manager.password}"/>
</target>

<!-- End Tomcat tasks -->

また、Tomcat installation/conf dir の tomcat-users.xml に次のエントリが追加されていることを確認します。

  <role rolename="manager-gui"/>
  <role rolename="admin-gui"/>
  <role rolename="manager"/>
  <role rolename="manager-script"/>
  <user username="kanchan" password="kanchan" roles="manager,manager-gui,admin-gui,manager-script"/>
于 2014-02-25T20:26:33.500 に答える
0

tomcat 7 でこの問題に出くわす可能性のある方は、バージョン 7.0.39 でorg/apache/tomcat/util/codec/binary/Base64が tomcat-coyote.jar に追加されたかのように見えます。

だから私はオプションだと思います:

  • 7.0.39+ にアップデート
  • 他の場所から使用してくださいorg/apache/commons/codec/binary/Base64 (commons-codec:commons-codec)
于 2015-04-27T23:50:02.300 に答える
0

Tomcat 8 では、関連するライブラリは tomcat-coyote ではなく「tomcat-util.jar」のようです :-)

于 2015-08-03T14:35:24.713 に答える
0

Tomcat バージョン7以上の場合はtomcat-util.jarbuild.xmlファイルに含めるだけです

<fileset dir="${appserver.lib}">
    ...
    <include name="tomcat-util.jar"/>
    ...
</fileset>
于 2017-04-22T22:48:24.420 に答える