2015-05-02 51 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