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

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:



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>


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>

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.


8

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


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.


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>

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.


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

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.


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.



0

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


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.


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


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 .


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.


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


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.


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


-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


-2

Solusinya adalah dengan menambahkan file jar common-logging.xx



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


nama benda? apa yang kamu bicarakan?
Bob V.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.