Rumah  >  Artikel  >  Java  >  Bagaimana untuk menyelesaikan \"NoClassDefFoundError\" dalam kebergantungan Maven apabila menjalankan fail JAR?

Bagaimana untuk menyelesaikan \"NoClassDefFoundError\" dalam kebergantungan Maven apabila menjalankan fail JAR?

Susan Sarandon
Susan Sarandonasal
2024-10-26 07:37:30486semak imbas

How to resolve

Menyelesaikan NoClassDefFoundError dalam Maven Dependencies

Maven ialah alat automasi binaan popular yang boleh memuat turun dan mengurus kebergantungan secara automatik untuk projek Java. Walau bagaimanapun, kadangkala anda mungkin menghadapi NoClassDefFoundError semasa menjalankan fail JAR binaan Maven anda pada baris arahan.

Ralat ini biasanya berlaku kerana Maven tidak menggabungkan kebergantungan ke dalam JAR yang dibina secara lalai. Tanpa kebergantungan pada classpath, Java Virtual Machine (JVM) tidak dapat mencari fail kelas perpustakaan semasa melaksanakan kod anda.

Untuk menyelesaikan isu ini, anda boleh menentukan perpustakaan secara manual pada classpath menggunakan - parameter cp. Walau bagaimanapun, pendekatan ini boleh membosankan.

Penyelesaian yang lebih cekap ialah dengan menggunakan maven-shade-plugin untuk menaungi kod perpustakaan ke dalam fail JAR output anda. Pemalam ini secara automatik mencipta "uber-JAR" yang mengandungi kedua-dua kelas anda dan kelas perpustakaan.

Untuk menambah maven-shade-plugin pada fail POM anda, ikut langkah berikut:

  1. Buka fail pom.xml anda.
  2. Tambah kebergantungan pemalam:
<code class="xml"><dependency>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.5.2</version>
</dependency></code>
  1. Tentukan pelaksanaan pemalam binaan:
<code class="xml"><plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.5.2</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
    </execution>
  </executions>
</plugin></code>
  1. Simpan fail pom.xml.
  2. Jalankan arahan berikut:
<code class="bash">mvn package
java -cp target/jar-filename.jar your.main.class</code>

Dengan melorek kebergantungan, anda mencipta JAR boleh laku yang merangkumi semua yang diperlukan perpustakaan. Ini menyelesaikan NoClassDefFoundError dan membolehkan anda menjalankan aplikasi anda secara bebas.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan \"NoClassDefFoundError\" dalam kebergantungan Maven apabila menjalankan fail JAR?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn