NoClassDefFoundError con Maven e una libreria Wiki Java


Sto usando una libreria per effettuare chiamate API di Wikipedia, chiamata Java Wiki Bot Framework. Sto anche usando Maven per le build e ho aggiunto il framework al pom.xml proprio come dice la pagina github. Tuttavia, quando provo a istanziare una qualsiasi delle classi nella libreria, mi dà questo errore:

Exception in thread "main" java.lang.NoClassDefFoundError: net/sourceforge/jwbf/core/actions/HttpActionClient
    at com.FactFinder.WikiParser.makeBot(WikiParser.java:21)
    at com.FactFinder.WikiParser.<init>(WikiParser.java:16)
    at com.FactFinder.App.main(App.java:15)
Caused by: java.lang.ClassNotFoundException: net.sourceforge.jwbf.core.actions.HttpActionClient
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 3 more

Il mio pom.xml

Apparentemente questo è un errore che si verifica quando il tuo jar non riesce a trovare una classe, ma ho controllato il classpath e sembra a posto. Il barattolo è incluso nella cartella corretta e ho verificato che include le classi che ho provato a utilizzare. Ho considerato di contattare l'autore della biblioteca, ma ho pensato che probabilmente fosse più il mio problema che il suo.

Author: MadDoctor5813, 2015-05-02

2 answers

Perché si utilizza la versione Snapshot 4.0.0-SNAPSHOT? Suggerirei vivamente di utilizzare una versione finale per evitare problemi, di cui 3.1.0 sembra essere l'ultima e più popolare:

<dependency>
  <groupId>net.sourceforge</groupId>
  <artifactId>jwbf</artifactId>
  <version>3.1.0</version>
</dependency>

[AGGIORNAMENTO]

  1. Seguire le convenzioni di denominazione; nome del pacchetto: com.factfinder (tutto minuscolo). Correggere sia il codice, pom, e nomi di directory.
  2. Aggiungi la versione per il plugin maven-jar

Nota che ho provato a usare il tuo pom-sembrava funzionare per me ... Sicuro di no ricevi altri avvisi o errori durante la tua build maven? puoi fare un pacchetto pulito?

 1
Author: YoYo, 2015-05-03 18:14:22

Controlla la riga 53 del tuo POM:

<classpathPrefix>lib\</classpathPrefix>

Dovrebbe essere:

<classpathPrefix>lib/</classpathPrefix>
 0
Author: devonlazarus, 2015-05-02 03:53:20