0

我正在尝试制作一个小程序,用于使用 jclouds 将文件上传到 openstack swift。我正面临 NoClassDefFoundError,以下是堆栈跟踪:

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/inject/internal/util/$Preconditions
    at org.nnsoft.guice.rocoto.configuration.ConfigurationModule.configure(ConfigurationModule.java:64)
    at com.google.inject.AbstractModule.configure(AbstractModule.java:59)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
    at com.google.inject.spi.Elements.getElements(Elements.java:101)
    at com.google.inject.spi.Elements.getElements(Elements.java:92)
    at org.nnsoft.guice.rocoto.Rocoto.expandVariables(Rocoto.java:52)
    at org.nnsoft.guice.rocoto.Rocoto.expandVariables(Rocoto.java:47)
    at org.jclouds.config.BindPropertiesToExpandedValues.configure(BindPropertiesToExpandedValues.java:47)
    at com.google.inject.AbstractModule.configure(AbstractModule.java:59)
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
    at com.google.inject.spi.Elements.getElements(Elements.java:101)
    at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:133)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103)
    at com.google.inject.Guice.createInjector(Guice.java:95)
    at com.google.inject.Guice.createInjector(Guice.java:72)
    at com.google.inject.Guice.createInjector(Guice.java:62)
    at org.jclouds.ContextBuilder.expandProperties(ContextBuilder.java:385)
    at org.jclouds.ContextBuilder.buildInjector(ContextBuilder.java:320)
    at org.jclouds.ContextBuilder.buildView(ContextBuilder.java:620)
    at org.jclouds.ContextBuilder.buildView(ContextBuilder.java:600)
    at com.cdac.appletclass.Test.main(Test.java:56)
Caused by: java.lang.ClassNotFoundException: com.google.inject.internal.util.$Preconditions
    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:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 21 more

我用 google 搜索com/google/inject/internal/util/$Preconditions,发现它是 guice-3.0.jar 的一部分。但是 guice-3.0.jar 已经在我的项目中了。那怎么调试呢?任何帮助..???

4

3 回答 3

2

我建议从您的应用程序中打印出您的类路径中的内容(请参阅此答案)。这样你就可以确切地知道你的应用程序正在使用什么类路径,如果有任何丢失或任何冲突。

于 2013-11-22T15:09:55.677 回答
0

现在问题解决了。这是 guice 3.0 和 guice-3.0.0 之间的错误,因为两者都具有相同的 maven artifact-id 但 group-id 不同。

于 2013-11-25T04:54:24.487 回答
-1

在此处输入图像描述

打开项目的属性并添加依赖库。

于 2013-11-22T09:19:43.357 回答