2015-05-02 52 views
1

我正在使用一个库来制作Wikipedia API调用,名为Java Wiki Bot Framework.我也在使用Maven构建,并且我已经将框架添加到了pom.xml中,就像github页面说。然而,当我尝试任何实例库中的类,它给了我这个错误:NoClassDefFoundError与Maven和Java Wiki库

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 

My pom.xml

显然,这是庄稼了,当你罐子找不到类的错误,但我已经检查了类路径,它看起来很好。该jar包含在正确的文件夹中,并且我已经验证它包含我尝试使用的类。我考虑过与图书馆作者联系,但我认为它可能比我的问题更多。

回答

0

检查线53的POM的:

<classpathPrefix>lib\</classpathPrefix> 

应该是:

<classpathPrefix>lib/</classpathPrefix> 
+0

它实际上曾经是另一种方式,但我翻转它看它是否会修复它。 – MadDoctor5813

1

你为什么要使用快照版本4.0.0-SNAPSHOT?我强烈建议您使用最终版本,以避免出现问题,其中3.1.0似乎是最新,最流行的一种:

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

[更新]

  1. 按照命名约定;包名称:com.factfinder(全部小写)。修复你的代码,pom和目录名称。
  2. 添加版本的Maven的JAR-插件

请注意,我用你的POM尝试 - 这似乎为我工作... 你确定你没有得到任何其他警告或错误在你的Maven构建?你可以做一个干净的包吗?

+0

快照有一些我不能没有的功能。 – MadDoctor5813

+0

干净的包装可以运作。它之前给我的唯一警告是关于Maven-jar的缺失版本的警告,根据你的建议,我已经修复了。我也将包名重构为全部小写。我仍然得到同样的错误。我已经联系了作者,而且pom似乎也为他工作,这绝对是奇怪的。 – MadDoctor5813

+0

可能已损坏的本地Maven存储库。删除%HOME%\。m2(windows)或〜/ .m2(unix)中的'repository'目录,然后重新执行'clean package'。 – YoYo