I'm getting runtime these errors but at runtime, not with an IDE.
My application will not run unless I add google-collect-
snapshot-20080530.jar to the classpath.
I'm using JRE 1.6, and the recently downloaded guice-
snapshot20081016.zip.
I did not build it myself.
I've checked a few times and can't see what I'm doing wrong.
Perhaps there's a jarjar problem with the snapshot creation?
Gory details below:
The error I get is
java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
at com.google.inject.multibindings.Multibinder$RealMultibinder.<init>
(Multibinder.java:178)
Line 178 is a reference to checkNotNull, which is one of the two
static imports from com.google.common.base.Preconditions.
I have these classes in the servlet applications WEB-INF/lib
directory:
guice-assistedinject-snapshot20081016.jar
guice-commands-snapshot20081016.jar
guice-multibindings-snapshot20081016.jar
guice-privatemodules-snapshot20081016.jar
guice-servlet-snapshot20081016.jar
guice-snapshot20081016.jar
guice-spring-snapshot20081016.jar
guice-struts2-plugin-snapshot20081016.jar
guice-throwingproviders-snapshot20081016.jar
If I add this file to the classpath, the error doesn't happen:
google-collect-snapshot-20080530.jar
Here is the error:
Nov 14, 2008 1:03:49 PM org.apache.catalina.core.StandardContext
listenerStart
SEVERE: Exception sending context initialized event to listener
instance of class com.example.MyGuiceServletContextListener
java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
at com.google.inject.multibindings.Multibinder$RealMultibinder.<init>
(Multibinder.java:178)
at com.google.inject.multibindings.Multibinder$RealMultibinder.<init>
(Multibinder.java:163)
at com.google.inject.multibindings.Multibinder.newSetBinder
(Multibinder.java:93)
at com.google.inject.multibindings.MapBinder.newMapBinder
(MapBinder.java:104)
at com.example.MyModule.configure(Module.java:33)
at com.google.inject.AbstractModule.configure(AbstractModule.java:61)
at com.google.inject.spi.Elements$RecordingBinder.install
(Elements.java:157)
at com.google.inject.spi.Elements.getElements(Elements.java:91)
at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:100)
at com.google.inject.Guice.createInjector(Guice.java:92)
at com.example.MyGuiceServletContextListener.getInjector
(MyGuiceServletContextListener.java:35)
at
com.google.inject.servlet.GuiceServletContextListener.contextInitialized
(GuiceServletContextListener.java:37)
at org.apache.catalina.core.StandardContext.listenerStart
(StandardContext.java:3827)
at org.apache.catalina.core.StandardContext.start
(StandardContext.java:4334)
at org.apache.catalina.core.ContainerBase.addChildInternal
(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:
771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:
525)
at org.apache.catalina.startup.HostConfig.deployDirectory
(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories
(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:
492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent
(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent
(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:
1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:
1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:
443)
at org.apache.catalina.core.StandardService.start
(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:
710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.ClassNotFoundException:
com.google.common.base.Preconditions
at org.apache.catalina.loader.WebappClassLoader.loadClass
(WebappClassLoader.java:1358)
at org.apache.catalina.loader.WebappClassLoader.loadClass
(WebappClassLoader.java:1204)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
... 36 more
Thank you,
Leigh.
On Oct 24, 8:14 am, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote:
> On Oct 24, 3:07 am, max <[EMAIL PROTECTED]> wrote:
>
> > In multibindings extension in files:
>
> > com.google.inject.multibindings.MapBinder
> > com.google.inject.multibindings.Multibinder
>
> > there are two static imports:
>
> > import static com.google.common.base.Preconditions.checkNotNull;
> > import static com.google.common.base.Preconditions.checkState;
>
> > while it should say:
>
> > import static com.google.inject.internal.base.Preconditions
>
> We use jarjar to rewrite the imports in the .class files.
> Your IDE might complain, but these imports are legit.
> If you'd like, you can get the source to these classes
> from the Google Collections project:
> http://code.google.com/p/google-collections/
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en
-~----------~----~----~----~------~----~------~--~---