Mendapatkan java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory exception

188

saya menjalankan program Injeksi Ketergantungan sederhana musim semi & mendapatkan pengecualian ini. Saya sudah menyertakan file common-logging1.1.1.jar dan spring.jar. Bisakah Anda membantu keluar?

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:119)
    at org.springframework.context.support.AbstractXmlApplicationContext.<init>(AbstractXmlApplicationContext.java:55)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:56)
    at com.client.StoryReader.main(StoryReader.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 6 more
skaffman
sumber
2
Pertama, periksa kembali apakah classpath Anda memang benar. Kedua, coba buka toples dan periksa apakah itu benar-benar berisi kelas org.apache.commons.logging.LogFactory. Terakhir, coba debugging dengan menetapkan breakpoint di kelas loader.
Kolibri
2
Semua jawaban di bawah ini menunjukkan commons-logginglangkah mundur. Gunakan jcl-over-slf4jsebagai gantinya.
Opyate
Di Android, tambahkan testCompile 'commons-logging: commons-logging: 1.1.1' ke app.gradle
Roger Garzon Nieto

Jawaban:

118

Saya juga menghadapi masalah yang sama, untuk memperbaiki, mengunduh file jar dari url di bawah ini

http://commons.apache.org/logging/download_logging.cgi

dan salin ke folder lib Anda, akan menyelesaikan masalah Anda.

Manikandan
sumber
2
ini tidak berhasil untuk saya, bahkan setelah menambahkan jar commons yang disebutkan di atas di jalan kelas
Deen John
2
Baik untuk saya. Lib ini rusak. Sangat menyebalkan.
Wesos de Queso
114

Jika Anda menggunakan maven untuk mengelola dependensi, tambahkan baris berikut di pom.xml Anda:

<dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
</dependency>
asuka
sumber
19

commons-logging-1.1.1.jar atau jcl-over-slf4j-1.7.6.jar al

Jika Anda menggunakan pakar, gunakan kode di bawah ini.

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
Paramesh Korrakuti
sumber
2
Termasuk "jcl-over-slf4j" adalah satu-satunya solusi yang bekerja untuk saya. Saya sudah memiliki commons-logging di dependensi saya.
Italo Borssatto
Saya menggunakan spring-boot versi 2.0.1.RELEASE dengan maven. Ini adalah satu-satunya solusi yang bekerja untuk saya juga.
Carlos Nantes
18

Saya memiliki masalah yang sama, dan menyelesaikannya dengan hanya menambahkan commons-logging.jarke jalur kelas.

bertumpuk
sumber
8

Menambahkan commons-logging.jar atau commons-logging-1.1.jar akan menyelesaikan ini ...

Sobat
sumber
6

Saya sudah memasukkan common-logging1.1.1.jar dan ...

Apakah Anda yakin mengeja nama file JAR dengan benar? Saya pikir itu mungkin commons-logging-1.1.1.jar(perhatikan tambahan -dalam nama). Periksa juga apakah nama direktori sudah benar.

NoClassDefFoundError selalu berarti bahwa suatu kelas tidak dapat ditemukan, sehingga kemungkinan jalur kelas Anda tidak benar.

Jesper
sumber
2
NoClassDefFoundErrordapat juga disebabkan oleh kasus sudut lainnya, seperti ketika inisialisasi kelas gagal dalam keadaan yang tidak jelas.
skaffman
Lebih jauh, jika dia mendapat NoClassDefFoundError karena instantiasi kelas gagal, maka dia seharusnya mendapatkan pengecualian ExceptionInInitializerError terlebih dahulu (kecuali tentu saja itu ditangkap diam-diam).
Kolibri
Dan jangan lupa huruf "s"commons-logging-1.1.1.jar
Glenn Lawrence
@ GlennLawrence Terima kasih, perbaiki namanya.
Jesper
6

Pengaturan ruang lingkup untuk mengkompilasi melakukannya untuk saya

<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.2</version>
  <scope>compile</scope>
</dependency>
Patrick Brielmayer
sumber
1
Memecahkan situasi saya. Ketika menjalankan kasus uji Mockito, saya mendapatkan kesalahan ini dan ketergantungan ini di pom.xml diselesaikan.
venugopal
4

Coba lakukan pembersihan lengkap dari direktori target / penyebaran untuk aplikasi untuk menyingkirkan guci perpustakaan basi. Buat bangunan baru dan periksa bahwa commons-logging.jar sebenarnya ditempatkan di folder lib yang benar. Mungkin tidak disertakan ketika Anda sedang membangun perpustakaan untuk aplikasi.

Emill
sumber
4

Masalah diselesaikan dengan menambahkan commons-logging.jar

File imp adalah,

antlr-runtime-3.0.1

org.springframework.aop-3.1.0.M2

org.springframework.asm-3.1.0.M2

org.springframework.aspects-3.1.0.M2

org.springframework.beans-3.1.0.M2

org.springframework.context.support-3.1.0.M2

org.springframework.context-3.1.0.M2

org.springframework.core-3.1.0.M2

org.springframework.expression-3.1.0.M2

commons-logging-1.1.1
Gading
sumber
3

Dua opsi (setidaknya):

  1. Tambahkan toples log umum ke file Anda dengan menyalinnya ke folder lokal.

Catatan: menautkan toples dapat menyebabkan masalah dengan server dan mungkin alasan mengapa itu ditambahkan ke jalur build tetapi tidak menyelesaikan masalah startup server.

Jadi jangan arahkan toples ke folder eksternal.

ATAU...

  1. Jika Anda benar-benar tidak ingin menambahkannya secara lokal karena Anda berbagi toples antar proyek, maka ...

Jika Anda menggunakan instance server tc, maka Anda perlu menambahkan jar sebagai jar eksternal ke konfigurasi server instance run.

buka jalankan sebagai, jalankan konfigurasi ..., {instance server tc Anda}, dan kemudian tab Class Path.

Kemudian tambahkan toples-logging umum.

devaaron
sumber
3

Saya mendapat masalah yang sama dari Anda. Akhirnya saya memeriksa versi apache yang memiliki kelas. Saya menemukan bahwa versi 1.0.4 memiliki kelas.

Cobalah untuk menggunakan versi 1.0.4 daripada 1.1.X atau 1.2.X

Ketergantungan saya:

    <dependencies>
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
            <version>1.3.5</version>
        </dependency>
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-client-java</artifactId>
            <version>1.3.5</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.0.4</version>
        </dependency>
    </dependencies>

Kode Java saya

J4pClient j4pClient = new J4pClient("http://localhost:8080/jolokia");
J4pReadRequest req = new J4pReadRequest("java.lang:type=Memory","HeapMemoryUsage");
req.setPath("used");
J4pReadResponse resp = j4pClient.execute(req);
System.out.println(resp.getValue());

Hasil saya:

130489168

Periksa juga bahwa ketergantungan maven Anda diimpor dengan baik.

歌 永 _
sumber
0

Hanya memeriksa apakah commons-logging.jar telah ditambahkan ke libs dan classpath Anda .. Saya memiliki masalah yang sama dan itu karena ini. dhammikas-

dhamma
sumber
0

Saya biasanya menetapkan classpath ke variabel dan kemudian memverifikasinya. Saya telah menulis skrip ruby ​​kecil yang saya sertakan dalam skrip startup saya yang memvalidasi classpath sebelum meluncurkan java . Memvalidasi classpath sebelum JVM dimulai telah menyelamatkan saya banyak waktu untuk memecahkan masalah-masalah seperti ini.

brianegge
sumber
2
Anda sebaiknya mempertimbangkan menggunakan alat seperti Maven.
Neovibrant
0

Hai saya mengikuti tutorial di tutorialpoint.com. Tambahkan setelah Anda menyelesaikan Langkah 2 - Instal Apache Common Logging API: Anda harus mengimpor perpustakaan jar eksternal ke proyek dari file yang diunduh pada langkah ini. Bagi saya nama file " commons-logging-1.1.1 ".

Ketiga
sumber
0

Jika Anda menjalankan ini di Android maka perhatikan bahwa java.beanspaket tampaknya tidak lengkap di Android. Untuk mencoba memperbaikinya di Android coba yang berikut ini:

  1. Unduh android-java-air-bridge.jar (saat ini tombol unduh ada di bawah halaman atau tautan langsung di sini )
  2. Salin botol yang sudah diunduh ke direktori [APPROOT] / app / libs Anda (atau tautkan botol itu dengan cara lain)
  3. Ubah import ***pernyataan menjadi seperti jembatan udara. Misalnya import javadz.beanutils.BeanUtilsbukannyaimport org.apache.commons.beanutils.BeanUtils;
  4. Bersihkan dan bangun kembali proyek

sumber 1 , sumber 2

Saya minta maaf karena saya menyadari ini tidak sepenuhnya menjawab pertanyaan, meskipun halaman SO ini banyak muncul ketika mencari NoClassDefFoundError: Failed resolution of: beanUtilskesalahan yang dihasilkan android .

Voy
sumber
0

Saya mendapatkan kesalahan yang sama saat toples hadir. Tidak ada solusi yang berhasil. Apa yang berhasil adalah menghapus toples dari sistem file (dari direktori .m2) dan kemudian membersihkan proyek pakar.

Anmol Gupta
sumber
0

Saya memiliki masalah yang sama dalam IDE gerhana, solusi saya adalah: Klik kanan di proyek Saya> Properti

masukkan deskripsi gambar di sini

Klik di Maven dan tulis: jar di Proyek Maven Aktif

masukkan deskripsi gambar di sini

Akhirnya, Terapkan dan Tutup

Yuliem Alavez
sumber
0

Dalam kasus saya, saya sedang menguji aplikasi Tomcat di gerhana dan mendapatkan kesalahan ini. Saya menyelesaikannya dengan memeriksa .classpathfile dan memperbaiki entri ini:

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
</classpathentry>

Atribut org.eclipse.jst.component.dependencytelah hilang.

paul
sumber
-1

Periksa apakah toples diimpor dengan benar. Saya mengimpornya menggunakan build path. Tapi itu tidak mengenali toples di folder WAR / lib. Kemudian, saya menyalin toples yang sama ke folder war / lib . Sekarang berfungsi dengan baik. Anda dapat menyegarkan / membersihkan proyek Anda.

Sibichakravarthy Gunasekaran
sumber
-2

Halo teman-teman jika Anda mendapatkan pengecualian bukan kelas yang ditemukan dalam kode hibernate itu adalah masalah file jar. Terutama ada dua masalah
1. Maksud saya mengatakan versi hibernate lama Anda yang bekerja mungkin 3,2 di bawah ini. Jadi jika Anda mencoba di atas 3,6 akan bekerja dengan baik

2. pertama memeriksa koneksi basis data. Jika basis data berfungsi dengan benar, itu adalah kesalahan dalam program Anda atau file jar.

silakan periksa kedua masalah ini jika itu juga tidak berhasil Anda mencoba untuk IDE. Saya menggunakan netbeanside 6.9 version.here hibernate berfungsi dengan baik. Anda tidak mendapatkan kesalahan dari kelas bukan untuk pengecualian pertama ..

Saya harap yang ini membantu lebih banyak

Krishnarjun
sumber
-2

Solusinya adalah dengan menambahkan file jar common-logging.xx

Sachin
sumber
-2

coba tambahkan dependensi ini org.apache.commons commons-exec 1.3

pengguna1244663
sumber
-3

Jika semuanya gagal, seperti yang terjadi pada saya, coba letakkan commons-logging-xyzjar di direktori lib Tomcat Anda. Itu memecahkan masalah! BTW, saya menggunakan Tomcat 6.

Bob V.
sumber
nama benda? apa yang kamu bicarakan?
Bob V.