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
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.
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]
- Seguire le convenzioni di denominazione; nome del pacchetto:
com.factfinder
(tutto minuscolo). Correggere sia il codice, pom, e nomi di directory. - 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?
Controlla la riga 53 del tuo POM:
<classpathPrefix>lib\</classpathPrefix>
Dovrebbe essere:
<classpathPrefix>lib/</classpathPrefix>