2011-12-05 74 views
1

我從this例如工作,我加入的log4j,SLF4J和bonecp到項目後,遇到了此問題:如何解決:異常在線程「主要」 java.lang.NoClassDefFoundError在BoneCP

run: 
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/FinalizableReferenceQueue 
    at com.jolbox.bonecp.BoneCP.<init>(BoneCP.java:321) 
    at javasampleapps.BoneCPExample.main(BoneCPExample.java:35) 
Caused by: java.lang.ClassNotFoundException: com.google.common.base.FinalizableReferenceQueue 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
    ... 2 more 
Java Result: 1 
BUILD SUCCESSFUL (total time: 3 seconds) 

回答

3

除了BoneCP和SLF4J,您還需要添加Google Guava,因爲BoneCP's requirements page指出它需要存在。下載guava-*.jar並將其添加到類路徑中,就像使用SLF4J和BoneCP一樣。

1

當您運行它時,您需要將這些jar添加到Java進程的類路徑中。例如,

java -classpath lib/log4j.jar;lib/slf4j.jar;lib/bonecp.jar [your_class] 

這假設jar是在一個名爲lib的目錄中,它位於執行Java命令的目錄中。

+0

我將它們添加到我的項目的庫部分?這樣做不是將它添加到類路徑嗎? – davidahines

+1

另外,聰明的名字。 – davidahines

+1

您的IDE可能會自動將它們添加到您的構建類路徑中。根據您執行Java的方式,您可能必須自己將它們添加到運行時類路徑中。 – sudocode

相關問題