Soru Karınca, Tomcat Yapı Hatası: java.lang.NoClassDefFoundError: org / apache / tomcat / util / buf / B2CConverter


Tomcat Sürümü: 7.0.20

Aşağıdaki yolumda çalışmayı deniyorum Bahar MVC öğretici: http://static.springsource.org/docs/Spring-MVC-step-by-step/part1.html

Bu derste, bir karınca komut dosyası, yöneticiyi kullanarak tomcat'e dağıtmak için kurulur. Ancak, tomcat görevlerinden herhangi birini çalıştırmayı denediğimde bazı sorunlarla karşılaşıyorum.

İlk kapalı, öğreticide hala kullanıyorlar org.apache.catalina.ant.InstallTask hangi kullanımdan kaldırıldı, ben de değiştim org.apache.catalina.ant.DeployTask.

Şimdi sorun şu ki Tomcat görevlerini çalıştırmayı denediğimde:

java.lang.NoClassDefFoundError: org/apache/tomcat/util/buf/B2CConverter
    at org.apache.catalina.util.Base64.encode(Base64.java:177)
    at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:204)
    at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:150)
    at org.apache.catalina.ant.ReloadTask.execute(ReloadTask.java:45)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.Main.runBuild(Main.java:809)
    at org.apache.tools.ant.Main.startAnt(Main.java:217)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
 Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.util.buf.B2CConverter
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 21 more

Bu yüzden biraz dolaştım ve bunu belirten bazı bilgiler buldum. tomcat-utils.jar sınıf yolunda olmalı, bu yüzden catalina-ant.jar ile dosya kümesine ekledim ama görünüşe göre org.apache.tomcat.util.buf.B2CConverter sınıf orada değil.

Sonra da kavanozları araştırmaya başladım. jar -tf sınıf içerip içermediğini öğrenmek için. Bunu öğrendim tomcat-coyote.jar sınıf vardı. Bunu dosya kümesine dahil etmekle birlikte, sorun çözülmez.

Herhangi bir fikri olan var mı?


32
2017-08-30 23:57


Menşei


Ant ve Tomcat 7'yi yapılandırmaya ilişkin kesin referans: tomcat.apache.org/tomcat-7.0-doc/... - dcompiled


Cevaplar:


Bunun için sınıf yolunu değiştirerek çalışıyorum.

<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-coyote.jar"/>
        <include name="tomcat-util.jar"/>
    </fileset>
    <fileset dir="${appserver.home}/bin">
                <include name="tomcat-juli.jar"/>
    </fileset>
</path>

29
2017-09-01 12:29



Burada benzer bir durum buldum: coderanch.com/t/551052/Spring/... Ancak çözüm burada verilenle aynıdır ve benim için çalışmaz. Eğer bir şey ifade ederse, Mac OS X'deyim. - Jason Turner
Bu çalışmayı yaparken de problemlerim vardı, son eksik adım şuydu: Katalina-ant.jar'ı $ ANT_HOME / lib'den kaldır, eğer önceki deneme-hata oturumu sırasında orada kopyaladın. - Michal


Jason gibi, Aidan'ın cevabını denedim ve işe yaramadı. TomCat 7 ile yönetici arayüzü biraz değişti. URL'de / manager / list kullanmak yerine / manager / text / list komutunu kullanmalısınız. Bu yüzden, liste görevini build.xml dosyasında aşağıdaki gibi değiştirdim:

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

Yönetici yöneticime "yönetici komut dosyası" rolünü de eklemem gerekiyordu, böylece bu işlem için uygun ayrıcalıklara sahip olacaktı:

  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <user username="admin" password="admin" roles="manager-gui,manager-script"/>

15
2017-11-08 23:08



Bu, Tomcat 7 kurulumu için iyi bir tavsiyedir, ancak bu sorunun çözümü ile ilgili olduğunu düşünmüyorum. Girdiğin için teşekkürler. - Jason Turner
Ben de bu bahar MVC öğretici çalışmasını almaya çalışıyorum, bu bahşiş, aidan'ın konfigürasyonuyla bağlantılı olarak benim için çalışacak görevler aldım. Ancak, tomcat yöneticisi URL'sini build.properties dosyasını düzenleyerek ve tomcat.manager.url dosyasını / metnini içerecek şekilde ayarlayarak tüm ant görevlerini düzeltmenizi öneririz. - dcompiled
Tomcat sunucusunu yeniden başlatmayı unutma! - Ulises


Aynı dersi takip ederken aynı hatayı buldum. Hedeflerin doğru çalışması için 3 değişiklik yapmam gerekiyordu.

Öncelikle, yukarıda belirtilen / metni eklemek için build.xml "liste" hedefini değiştirin:

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

İkincisi, catalina karınca sınıf yolunu değiştirin:

<path id="catalina-ant-classpath">
    <fileset dir="${appserver.home}/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>

Son olarak, bunu tomcat-users.xml dosyasına ekleyin:

<role rolename="manager-script"/>
  <user username="tomcat" password="s3cret" roles="manager-gui,tomcat,manager-script"/>

Ve sonra benim için çalıştı =)


12
2018-05-28 12:01



Bu tomcat 7.0.25 ile fedora 16 env benim için çalıştı - Rythmic
Bu benim için de çalıştı. Tomcat'i yeniden başlatmayı unutmayın. - Justin
Sadece 7.0.33 ile test edildi ve tüm üç adım eklendiğinde çalışır. - java_dude
@Jason Turner Bu doğru cevap, aynı zamanda Mac OS'u çalıştırıyorum ve Neets'in önerdiği sorunun giderilmesini yapıyorum. Catalina Classpath'ı değiştirdiğinizden ve Master Classpath'i değiştirmediğinizden emin olun. - Bartzilla
En eksiksiz ve uygulanabilir cevap. Teşekkürler! - kolobok


Bu benim için çalıştığı görünüyordu (Tomcat 7.0.21, OS X):

<path id="catalina-ant-classpath">
  <fileset dir="${tomcat_dir}/lib">
    <include name="catalina-ant.jar"/>
    <include name="tomcat-coyote.jar"/>
    <include name="tomcat-util.jar"/>
  </fileset>
  <fileset dir="${tomcat_dir}/bin">
    <include name="tomcat-juli.jar"/>
  </fileset>
</path>
<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" classpathref="catalina-ant-classpath"/>
<taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" classpathref="catalina-ant-classpath"/>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask" classpathref="catalina-ant-classpath"/>

3
2017-09-21 17:13



Cevabınız için teşekkürler. Temelde Aidan'ınkiyle aynı. Yine de denedim ve aynı sonucu aldım. - Jason Turner


Çalıştırmak için tüm karınca komutlarını almak için url, build.xml dosyasındaki "liste" hedefini tanımlarken url'yi değiştirmek yerine build.properties dosyasında değiştirilebilir.

tomcat.manager.url=http://localhost:8080/manager/text

3
2017-09-29 18:17





Ayrıca, Tomcat 7 için Catalina-Ant dergisine bir göz atın:

http://paulgrenyer.blogspot.co.uk/2011/11/catalina-ant-for-tomcat-7.html


2
2018-04-07 15:36





Diğer cevapların hiçbiri benim için çalışmıyor. Bunun yerine, TOMCAT_HOME / lib / catalina-ant.jar, TOMCAT_HOME / lib / tomcat-coyote.jar, TOMCAT_HOME / lib / tomcat-util.jar ve TOMCAT_HOME / bin / tomcat-juli.jar'ı ANT_HOME / lib dizinine kopyaladım.

Sınıf dosyaları bu dosyaları düzgün bir şekilde içermiyor gibi görünüyor.


1
2018-01-06 12:05



Muhtemelen catalina-ant.jar içinde ANT_HOME / lib. Bu konumdan kaldırmayı deneyin ve daha sonra önceki yanıtlardan birinde olduğu gibi ayarlanmış olan classpath ile tekrar dağıtmayı deneyin ... - Igor


benim için ne çalıştı dört kavanoz dosyalarını yapı yoluna ekliyordu

Çalıştır -> Çalıştır - - Program Seç, Sağdaki Sınıf Yolu sekmesini seç, Kullanıcı Girdileri'ni tıkladıktan sonra tomcat dizininden harici 4 tane kavanoz ekle.

Bundan sonra, build.xml benimki gibi çalışır


1
2018-06-10 18:48





Bunun neden böyle olduğundan emin değilim, ama işte bir çözüm: http://www.coderanch.com/t/553582/Tomcat/java-lang-NoClassDefFoundError-org-apache

Çözümü arıyorum, bir kez olsun, onu buraya göndermeyi unutmayacağım.

Opensuse kullanıyorum.


0
2017-12-01 19:02